Challenge

Project 3

Q1.

#include <iostream>
#include <vector>
#include <string>

// Vehicle class
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) {}

const std::string& getMake() const { return make; }
const std::string& getModel() const { return model; }
int getYear() const { return year; }
int getOdometer() const { return odometer; }

virtual void maintenanceActivities() const = 0; // Pure virtual function

virtual ~Vehicle() {} // Virtual destructor
};

// GasCar class
class GasCar : public Vehicle {
public:
GasCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}

void maintenanceActivities() const override {
// Implement gas car specific maintenance activities
std::cout << "Gas car maintenance activities\n";
}
};

// DieselCar class
class DieselCar : public Vehicle {
public:
DieselCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}

void maintenanceActivities() const override {
// Implement diesel car specific maintenance activities
std::cout << "Diesel car maintenance activities\n";
}
};

// ElectricCar class
class ElectricCar : public Vehicle {
public:
ElectricCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}

void maintenanceActivities() const override {
// Implement electric car specific maintenance activities
std::cout << "Electric car maintenance activities\n";
}
};

// Library class
class MaintenanceLibrary {
private:
std::vector<Vehicle*> vehicles;

public:
void addVehicle(Vehicle* vehicle) {
vehicles.push_back(vehicle);
}

void listVehicles() const {
std::cout << "Vehicle Inventory:\n";
for (const auto& vehicle : vehicles) {
std::cout << "Make: " << vehicle->getMake() << ", Model: " << vehicle->getModel()
<< ", Year: " << vehicle->getYear() << ", Odometer: " << vehicle->getOdometer() << "\n";
}
}

// Other functions for updating, removing, etc.

~MaintenanceLibrary() {
for (const auto& vehicle : vehicles) {
delete vehicle;
}
}
};

int main() {
MaintenanceLibrary library;

// Example usage
Vehicle* gasCar = new GasCar("Toyota", "Corolla", 2022, 10000);
Vehicle* dieselCar = new DieselCar("Ford", "F-150", 2021, 20000);
Vehicle* electricCar = new ElectricCar("Tesla", "Model S", 2023, 5000);

library.addVehicle(gasCar);
library.addVehicle(dieselCar);
library.addVehicle(electricCar);

library.listVehicles();

delete gasCar;
delete dieselCar;
delete electricCar;

return 0;
}

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.