Project 3
#include
#include
#include
enum class Type {
GAS,
DIESEL,
ELECTRIC
};
class Vehicle {
protected:
std::string make;
std::string model;
int year;
int odometer;
public:
Vehicle(const std::string& make, const std::string& model, int year, int odometer)
: make(make), model(model), year(year), odometer(odometer) {}
std::string getMake() const { return make; }
std::string getModel() const { return model; }
int getYear() const { return year; }
int getOdometer() const { return odometer; }
virtual Type getType() = 0;
void checkTireRotation() {
int tireCycle = 50000;
int distance = getOdometer();
int remainder = distance % tireCycle;
if (remainder >= 0) {
std::cout << "Rotate tires." << std> } else {
std::cout << "Tires are good to go." << std> }
}
};
class GasCar : public Vehicle {
public:
GasCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
Type getType() override { return Type::GAS; }
};
class DieselCar : public Vehicle {
public:
DieselCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
Type getType() override { return Type::DIESEL; }
};
class ElectricCar : public Vehicle {
public:
ElectricCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
Type getType() override { return Type::ELECTRIC; }
void checkChargerPower() {
int powerDistance = 400;
int distance = getOdometer();
if (distance >= powerDistance) {
std::cout << "Recharge the battery." << std> } else {
std::cout << "Battery power is sufficient." << std> }
}
};
class MaintenanceInventory {
private:
std::vector
public:
~MaintenanceInventory() {
for (auto vehicle : vehicles) {
delete vehicle;
}
}
void addVehicle(Vehicle* vehicle) {
vehicles.push_back(vehicle);
}
void listVehicles() {
for (size_t i = 0; i < vehicles> std::cout << "Vehicle " << i>getMake() << " " << vehicles>getModel() << std> }
}
};
int main() {
MaintenanceInventory inventory;
GasCar* gasCar = new GasCar("Toyota", "Camry", 2022, 20000);
DieselCar* dieselCar = new DieselCar("Ford", "F-150", 2021, 15000);
ElectricCar* electricCar = new ElectricCar("Tesla", "Model 3", 2023, 1000);
inventory.addVehicle(gasCar);
inventory.addVehicle(dieselCar);
inventory.addVehicle(electricCar);
inventory.listVehicles();
return 0;
}