Advertisement
35657

Untitled

May 14th, 2024
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. #include <set>
  2. #include <string>
  3. #include <iostream>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. // Человек
  10. class Person {
  11. public:
  12.     Person(string name, int age, string gender) : name_(name), age_(age), gender_(gender) {};
  13.  
  14.     string GetName() const {
  15.         return name_;
  16.     }
  17.     int GetAge() const {
  18.         return age_;
  19.     }
  20.     string GetGender() const {
  21.         return gender_;
  22.     }
  23.  
  24.     virtual void Speak() {
  25.         cout << "Привет" << endl;
  26.     }
  27.  
  28. private:
  29.     string name_;
  30.     int age_;
  31.     string gender_;
  32. };
  33.  
  34.  
  35.  
  36.  
  37. // Рабочий
  38. class Worker : public Person {
  39. public:
  40.     Worker(string name, int age, string gender) : Person(name, age, gender) {};
  41.  
  42.     virtual string Work() = 0;
  43.  
  44. };
  45.  
  46.  
  47. // Маляр
  48. class Painter : public Worker {
  49. public:
  50.     Painter(string name, int age, string gender) : Worker(name, age, gender) {};
  51.  
  52.     string Work() override {
  53.         return "Я крашу";
  54.     }
  55.  
  56.     void Speak() override {
  57.         cout << "Привет, я маляр" << endl;
  58.     }
  59. };
  60.  
  61. // Водитель
  62. class Driver : public Worker {
  63. public:
  64.     Driver(string name, int age, string gender) : Worker(name, age, gender) {};
  65.  
  66.     string Work() override {
  67.         return "Я везу";
  68.     }
  69.  
  70.     void Speak() override {
  71.         cout << "Привет, я водитель" << endl;
  72.     }
  73. };
  74.  
  75. // Строитель
  76. class Builder : public Worker {
  77. public:
  78.     Builder(string name, int age, string gender) : Worker(name, age, gender) {};
  79.  
  80.     string Work() override {
  81.         return "Я строю";
  82.     }
  83.  
  84.     void Speak() override {
  85.         cout << "Привет, я строитель" << endl;
  86.     }
  87. };
  88.  
  89. int main() {
  90.     setlocale(LC_ALL, "ru");
  91.  
  92.     Painter pn("Света", 25, "woman");
  93.     Driver dr("Игорь", 33, "man");
  94.     Builder bd("Женя", 23, "man");
  95.  
  96.  
  97.     vector<Worker*> workers;
  98.  
  99.     workers.push_back(&pn);
  100.     workers.push_back(&dr);
  101.     workers.push_back(&bd);
  102.  
  103.     for (auto a : workers) {
  104.         cout << a->GetName() << " " << a->GetAge() << " " << a->GetGender() << " " << a->Work() << endl;
  105.     }
  106.  
  107.     cout << endl << endl;
  108.  
  109.     for (auto a : workers) {
  110.         a->Speak();
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement