Код IT
← Каталог

Учебные примеры ООП — Автомобиль

Пробег, расход топлива и напоминание о техобслуживании.

rust rustencyclopediaoop-practice141 embed URL статья в энциклопедии
Rust main.rs
struct Car {
    brand: String,
    fuel: f64,
    mileage: i32,
}

impl Car {
    const SERVICE_INTERVAL: i32 = 15000;
    const FUEL_PER_KM: f64 = 0.1;

    fn new(brand: &str) -> Self {
        Self {
            brand: brand.to_string(),
            fuel: 40.0,
            mileage: 0,
        }
    }

    fn refuel(&mut self, liters: f64) {
        self.fuel += liters;
        println!("Заправка: +{:.0} л. Топливо: {:.1} л", liters, self.fuel);
    }

    fn drive(&mut self, km: i32) {
        let needed = km as f64 * Self::FUEL_PER_KM;
        if needed > self.fuel {
            println!("Ошибка: недостаточно топлива");
            return;
        }
        self.fuel -= needed;
        self.mileage += km;
        println!(
            "Проехали {} км. Топливо: {:.1} л. Пробег: {} км",
            km, self.fuel, self.mileage
        );
        if self.mileage >= Self::SERVICE_INTERVAL {
            println!("⚠️ ВНИМАНИЕ: требуется техобслуживание!");
        }
    }
}

fn main() {
    let mut car = Car::new("Lada");
    car.refuel(10.0);
    car.drive(5000);
    car.drive(11000);
}
struct Car {
    brand: String,
    fuel: f64,
    mileage: i32,
}

impl Car {
    const SERVICE_INTERVAL: i32 = 15000;
    const FUEL_PER_KM: f64 = 0.1;

    fn new(brand: &str) -> Self {
        Self {
            brand: brand.to_string(),
            fuel: 40.0,
            mileage: 0,
        }
    }

    fn refuel(&mut self, liters: f64) {
        self.fuel += liters;
        println!("Заправка: +{:.0} л. Топливо: {:.1} л", liters, self.fuel);
    }

    fn drive(&mut self, km: i32) {
        let needed = km as f64 * Self::FUEL_PER_KM;
        if needed > self.fuel {
            println!("Ошибка: недостаточно топлива");
            return;
        }
        self.fuel -= needed;
        self.mileage += km;
        println!(
            "Проехали {} км. Топливо: {:.1} л. Пробег: {} км",
            km, self.fuel, self.mileage
        );
        if self.mileage >= Self::SERVICE_INTERVAL {
            println!("⚠️ ВНИМАНИЕ: требуется техобслуживание!");
        }
    }
}

fn main() {
    let mut car = Car::new("Lada");
    car.refuel(10.0);
    car.drive(5000);
    car.drive(11000);
}