From 7e4ee3d52294fae707e84bad56882b8de7676b15 Mon Sep 17 00:00:00 2001 From: Andrey Kassaev Date: Mon, 4 Mar 2024 20:30:45 +0400 Subject: [PATCH] init --- .gitignore | 2 ++ Car.cpp | 1 + Car.h | 29 +++++++++++++++++++++++++++++ CarDriver.cpp | 1 + CarDriver.h | 20 ++++++++++++++++++++ Driver.cpp | 1 + Driver.h | 20 ++++++++++++++++++++ Main.cpp | 29 +++++++++++++++++++++++++++++ ServiceCarDriver.cpp | 1 + ServiceCarDriver.h | 17 +++++++++++++++++ TaxiDriver.cpp | 1 + TaxiDriver.h | 22 ++++++++++++++++++++++ Transport.cpp | 1 + Transport.h | 13 +++++++++++++ TransportMode.cpp | 1 + TransportMode.h | 5 +++++ 16 files changed, 164 insertions(+) create mode 100644 .gitignore create mode 100644 Car.cpp create mode 100644 Car.h create mode 100644 CarDriver.cpp create mode 100644 CarDriver.h create mode 100644 Driver.cpp create mode 100644 Driver.h create mode 100644 Main.cpp create mode 100644 ServiceCarDriver.cpp create mode 100644 ServiceCarDriver.h create mode 100644 TaxiDriver.cpp create mode 100644 TaxiDriver.h create mode 100644 Transport.cpp create mode 100644 Transport.h create mode 100644 TransportMode.cpp create mode 100644 TransportMode.h 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 +};