commit 7e4ee3d52294fae707e84bad56882b8de7676b15 Author: Andrey Kassaev Date: Mon Mar 4 20:30:45 2024 +0400 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6df1069 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*/* +OOP* \ No newline at end of file diff --git a/Car.cpp b/Car.cpp new file mode 100644 index 0000000..0002db7 --- /dev/null +++ b/Car.cpp @@ -0,0 +1 @@ +#include "Car.h" diff --git a/Car.h b/Car.h new file mode 100644 index 0000000..d44e248 --- /dev/null +++ b/Car.h @@ -0,0 +1,29 @@ +#pragma once +#include "Transport.h" +#include +#include + +class Car : Transport +{ +public: + std::string make; + std::string model; + int year; + + Car(TransportMode value, std::string make, std::string model, int year) : Transport(value) { + this->make = make; + this->model = model; + this->year = year; + }; + + void getInfo() { + std::cout << "Car Info:\n" << \ + "Make: " << this->make << "\n" <<\ + "Model: " << this->model << "\n" <<\ + "Year: " << this->year << "\n\n"; + }; + + void move() override { + std::cout << "Car is moving...\n"; + }; +}; diff --git a/CarDriver.cpp b/CarDriver.cpp new file mode 100644 index 0000000..124a23e --- /dev/null +++ b/CarDriver.cpp @@ -0,0 +1 @@ +#include "CarDriver.h" diff --git a/CarDriver.h b/CarDriver.h new file mode 100644 index 0000000..5047772 --- /dev/null +++ b/CarDriver.h @@ -0,0 +1,20 @@ +#pragma once +#include "Car.h" +#include "Driver.h" + +class CarDriver +{ +public: + + Car* car; + Driver* driver; + + CarDriver(Car &car, Driver &driver) { + this->car = &car; + this->driver = &driver; + + } + + virtual void driveCar() = 0; +}; + diff --git a/Driver.cpp b/Driver.cpp new file mode 100644 index 0000000..ef5233c --- /dev/null +++ b/Driver.cpp @@ -0,0 +1 @@ +#include "Driver.h" diff --git a/Driver.h b/Driver.h new file mode 100644 index 0000000..37aa82c --- /dev/null +++ b/Driver.h @@ -0,0 +1,20 @@ +#pragma once +#include +#include + +class Driver +{ +public: + std::string name; + int age; + Driver(std::string name, int age) { + this->name = name; + this->age = age; + } + void getInfo() { + std::cout << "Driver Info:\n" << \ + "Name: " << this->name << "\n" << \ + "Age: " << this->age << "\n\n"; + } +}; + diff --git a/Main.cpp b/Main.cpp new file mode 100644 index 0000000..01c9be1 --- /dev/null +++ b/Main.cpp @@ -0,0 +1,29 @@ +#pragma once +#include "Car.h" +#include "Driver.h" +#include "TransportMode.h" +#include "ServiceCarDriver.h" +#include "TaxiDriver.h" + +int main() { + + Car car1(TransportMode::Land, "Lada", "Largus", 2019); + Driver driver1("Philipp Kirkorov", 56); + + Car car2(TransportMode::Land, "Lada", "Kalina", 2012); + Driver driver2("Nikolay Baskov", 47); + + ServiceCarDriver serviceCarDriver(car1, driver1, "Pyaterochka+"); + serviceCarDriver.driveCar(); + serviceCarDriver.car->getInfo(); + serviceCarDriver.driver->getInfo(); + + TaxiDriver taxiDriver(car2, driver2, true); + taxiDriver.driveCar(); + taxiDriver.car->getInfo(); + taxiDriver.driver->getInfo(); + + system("pause"); + + return 0; +}; \ No newline at end of file diff --git a/ServiceCarDriver.cpp b/ServiceCarDriver.cpp new file mode 100644 index 0000000..1915c00 --- /dev/null +++ b/ServiceCarDriver.cpp @@ -0,0 +1 @@ +#include "ServiceCarDriver.h" diff --git a/ServiceCarDriver.h b/ServiceCarDriver.h new file mode 100644 index 0000000..431e6a9 --- /dev/null +++ b/ServiceCarDriver.h @@ -0,0 +1,17 @@ +#pragma once +#include "CarDriver.h" + +class ServiceCarDriver : public CarDriver +{ +public: + std::string companyName; + + ServiceCarDriver(Car& car, Driver& driver, std::string companyName): CarDriver(car, driver) { + this->companyName = companyName; + }; + + void driveCar() override { + std::cout << "Driving " << this->companyName << "'s car\n"; + }; +}; + diff --git a/TaxiDriver.cpp b/TaxiDriver.cpp new file mode 100644 index 0000000..c201efb --- /dev/null +++ b/TaxiDriver.cpp @@ -0,0 +1 @@ +#include "TaxiDriver.h" diff --git a/TaxiDriver.h b/TaxiDriver.h new file mode 100644 index 0000000..fa663e9 --- /dev/null +++ b/TaxiDriver.h @@ -0,0 +1,22 @@ +#pragma once + +#include "CarDriver.h" +class TaxiDriver : + public CarDriver +{ +public: + bool checkersOn; + + TaxiDriver(Car& car, Driver& driver, bool checkersOn) : CarDriver(car, driver) { + this->checkersOn = checkersOn; + }; + + void driveCar() override { + std::cout << "Driving Taxi Car with Checkers " << (this->checkersOn? "ON\n" : "OFF\n"); + } + + void tellStory() { + std::cout << "Zolotay chasha zolotaya! Napolnyet aromatom chaya!...\n"; + } +}; + diff --git a/Transport.cpp b/Transport.cpp new file mode 100644 index 0000000..311a407 --- /dev/null +++ b/Transport.cpp @@ -0,0 +1 @@ +#include "Transport.h" diff --git a/Transport.h b/Transport.h new file mode 100644 index 0000000..f63c017 --- /dev/null +++ b/Transport.h @@ -0,0 +1,13 @@ +#pragma once +#include "TransportMode.h" + +class Transport +{ +public: + TransportMode mode; + Transport(TransportMode value) { + mode = value; + }; + virtual void move() = 0; +}; + diff --git a/TransportMode.cpp b/TransportMode.cpp new file mode 100644 index 0000000..1403a05 --- /dev/null +++ b/TransportMode.cpp @@ -0,0 +1 @@ +#include "TransportMode.h" \ No newline at end of file diff --git a/TransportMode.h b/TransportMode.h new file mode 100644 index 0000000..7950791 --- /dev/null +++ b/TransportMode.h @@ -0,0 +1,5 @@ +#pragma once + +enum class TransportMode { + Land, Air, Water +};