istomina_sofia

Абстрактный класс

Jun 25th, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.13 KB | None | 0 0
  1. #include<cstring>
  2. #include <iostream>
  3. using namespace std;
  4. class organization//абстрактный класс организации
  5. {
  6. public:
  7.     organization()//конструктор
  8.     {
  9.         add(this);
  10.     }
  11.     static organization* begin;//статичные переменные
  12.     organization* next;
  13.     virtual void print() = 0;//виртуальные методы
  14.     virtual void setparametrs() = 0;
  15.     static void add(organization* object) {//статический метод, добавляет объекты в список
  16.         object->next = begin;
  17.         begin = object;
  18.     }
  19.     static void show()//статический метод,пока создаются объекты,они добавляются в список
  20.     {
  21.         organization* ptr = begin;
  22.         while (ptr != 0)
  23.         {
  24.             ptr->print();
  25.             ptr = ptr->next;
  26.         }
  27.     }
  28. protected:
  29.     string name;
  30.     int year;
  31. };
  32. organization* organization::begin = 0;  //инициализация статической переменной
  33. class factory :public organization//класс завод
  34. {
  35. public:
  36.     factory(string name, string surname, int year)//конструктор
  37.     {
  38.         this->name = name;
  39.         this->surname = surname;
  40.         this->year = year;
  41.     }
  42.     //конструктор по умолчанию
  43.     factory() : factory("Кооператив Озеро", "Ротенберг", 1991) {}
  44.     //переопределение виртуальных функций
  45.     void print()
  46.     {
  47.         cout << endl << "Информация о организации:" << endl;
  48.         cout << "Название организации: " << name << endl;
  49.         cout << "Фамилия основателя: " << surname << endl;
  50.         cout << "Год основания: " << year << endl;
  51.     }
  52.     void setparametrs()//функция вывода некой величины на экран
  53.     {
  54.         float kolvo;
  55.         float colvo;
  56.         cout << "Введите количество производимого товара за год: ";
  57.         cin >> kolvo;
  58.         colvo = kolvo * 150;
  59.         cout << "Прибыль завода за год: " << colvo << " рублей" << endl;
  60.     }
  61. protected:
  62.     string surname;
  63. };
  64. class insurance :public organization//класс страховой компании
  65. {
  66. public:
  67.     //конструктор с параметрами
  68.     insurance(string name, string surname, int year)
  69.     {
  70.         this->name = name;
  71.         this->surname = surname;
  72.         this->year = year;
  73.     }
  74.     //конструктор по умолчанию
  75.     insurance() : insurance("РосГосСтрах", "Бондарчук", 2003) {}
  76.     //переопределение виртуальных функций
  77.     void print()
  78.     {
  79.         cout << endl << "Информация об страховой компании: " << endl;
  80.         cout << "Название компании: " << name << endl;
  81.         cout << "Фамилия основателя: " << surname << endl;
  82.         cout << "Год основания:  " << year << endl;
  83.     }
  84.     void setparametrs()//функция вывода некой величины на экран
  85.     {
  86.         float kolvo;
  87.         float colvo;
  88.         cout << "Введите количество оформленных страховок за год: ";
  89.         cin >> kolvo;
  90.         colvo = kolvo * 5555;
  91.         cout << "Прибыль компании за год " << colvo << " рублей" << endl;
  92.     }
  93. protected:
  94.     string surname;
  95. };
  96. class shipbuilding : public insurance//класс судостроительной компании
  97. {
  98. public:
  99.     //конструктор с параметрами
  100.     shipbuilding(string name, string surname, int year, string who)
  101.     {
  102.         this->name = name;
  103.         this->surname = surname;
  104.         this->year = year;
  105.         this->who = who;
  106.     }
  107.     //конструктор по умолчанию
  108.     shipbuilding() : shipbuilding("РосСуд", "Титаников", 1917, "Аврора") {}
  109.     //переопределение виртуальных функций
  110.     void print()
  111.     {
  112.         cout << endl << "Информация о судостроительной компании:" << endl;
  113.         cout << "Название компании: " << name << endl;
  114.         cout << "Фамилия основателя: " << surname << endl;
  115.         cout << "Год основания: " << year << endl;
  116.         cout << "Самое известное судно: " << who << endl;
  117.     }
  118.     void setparametrs()//функция вывода некой величины на экран
  119.     {
  120.         float sum;
  121.         float percent;
  122.         cout << "Введите процент сотрудников, трудящихся над судном: ";
  123.         cin >> sum;
  124.         percent = sum * 0, 75;
  125.         cout << "Итоговый шанс получить судно без дефектов: " << percent << " % " << endl;
  126.     }
  127. protected:
  128.     string who;
  129. };
  130. int main()
  131. {
  132.     setlocale(0, "");
  133.     factory B("Кооператив Озеро", "Ротенберг", 1991);//ввод данных для второго класса
  134.     insurance D("РосГосСтрах", "Бондарчук", 2003);//ввод данных для третьего класса
  135.     shipbuilding S("РосСуд", "Титаников", 1917, "Аврора");//ввод данных для четвертого класса
  136.     organization::show();//виртуальный метод
  137.     return 0;
  138. }
  139.  
Add Comment
Please, Sign In to add comment