Advertisement
35657

Untitled

May 11th, 2024
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 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. private:
  25.     string name_;
  26.     int age_;
  27.     string gender_;
  28. };
  29.  
  30.  
  31.  
  32.  
  33. // Рабочий. Владеет несколькими специальностями
  34. class Worker : public Person {
  35. public:
  36.     Worker(string name, int age, string gender) : Person(name, age, gender) {};
  37.  
  38.     void AddSpeciality(string speciality) {
  39.         specialties_.insert(speciality);
  40.     }
  41.     bool HasSpeciality(string speciality) const {
  42.         return specialties_.count(speciality);
  43.     }
  44.  
  45.     string Work() {
  46.         return "Я работаю";
  47.     }
  48.  
  49. private:
  50.     set<string> specialties_;
  51. };
  52.  
  53.  
  54. //
  55. class Painter : public Worker {
  56. public:
  57.     Painter(string name, int age, string gender) : Worker(name, age, gender) {};
  58.  
  59.     string Work() {
  60.         return "Я крашу";
  61.     }
  62. };
  63.  
  64. class Driver : public Worker {
  65. public:
  66.     Driver(string name, int age, string gender) : Worker(name, age, gender) {};
  67.  
  68.     string Work() {
  69.         return "Я везу";
  70.     }
  71. };
  72.  
  73. class Builder : public Worker {
  74. public:
  75.     Builder(string name, int age, string gender) : Worker(name, age, gender) {};
  76.  
  77.     string Work() {
  78.         return "Я строю";
  79.     }
  80. };
  81.  
  82. int main() {
  83.     setlocale(LC_ALL, "ru");
  84.  
  85.     Painter pn("Света", 25, "woman");
  86.     Driver dr("Игорь", 33, "man");
  87.     Builder bd("Женя", 23, "man");
  88.  
  89.     vector<Worker*> workers;
  90.  
  91.     workers.push_back(&pn);
  92.     workers.push_back(&dr);
  93.     workers.push_back(&bd);
  94.  
  95.     for (auto a : workers) {
  96.         cout << a->GetName() << " " << a->GetAge() << " " << a->GetGender() << endl;
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement