До цих пір в прикладах ми використовували спадкоємство тільки для додавання нових можливостей до існуючих класів. Тепер розглянемо приклад, де спадкоємство застосовується для інших цілей, як частина первинної розробки програми.Як приклад розглянемо базу даних службовців деякої компанії. Для спрощення ситуації в ній існує тільки три категорії службовців: менеджери, зайняті управлінням, учені, зайняті дослідженнями і розробкою товару компанії, і робочі, зайняті виготовленням товару.У базі даних зберігаються імена службовців всіх категорій і їх ідентифікаційні номери. Проте в інформації про менеджерів міститься ще і назва їх посади і їх внески в футбольний-клуб, а в інформації про учених - кількість опублікованих статей.Приклад нашої програми починається з опису базового класу employee. Цей клас містить прізвища службовців і їх номери. Він породжує три нові класи: manager, scientist і laborer. Класи manager і scientist містять додаткову інформацію про ці категорії службовців.Далі розглянемо лістинг програми EMPLOY:
// employ.cpp// приклад написання бази даних працівників з використанням успадковування.# include <iostream>Unsigned namespace std;Const int Len = 80; // максимальна довжина імені.//------------------------------------------------
class employee //деякий працівник
{ private:char name [Len]; // ім’я працівникаUnsigned long number; // номер працівника
public:
Void getdata (){ cout << “\n Введіть прізвище: ”; cin >> name;cout << “\n Введіть номер: ”; cin >> number;}Void putdata () const{ cout << “\n Прізвище: ” << name;cout << “\n Номер: ” << number;}};
//-----------------------------------------------
Class manager: public employee // менеджер
{ private:Char title [ Len ]; // посадаDouble dues; // сума внеску в клуб
public:
Void getdata (){Employee:: getdata ();cout << ” Введіть посаду: ”; cin >>title;cout << ” Введіть суму внеску: ”; cin >>dues;}Void putdata () const{Employee:: pytdata ();cout << ” \n Посада: ” << title;cout << ” \n Сума внеску: ” << dues;}}//-------------------------------------------------------
Class scientist: public employee // вчений
{ Private:Int pubs; //кількість публікацій
public:
Void getdata (){Employee:: getdata ();Cout << “Введіть кількість публікацій: ”; cin >> pubs;}Void putdata () const{Employee:: putdata ();Cout << “\n Введіть кількість публікацій: ”; cin >> pubs;}};//--------------------------------------------------
Class laborer: public employee // робочий
{ };//--------------------------------------------------------------- головна програма
Int main ()
{Manager m1, m2;Scientist s1;Laborer L1;// введемо інформацію про декількох працівниківcout << endl;cout << “\n Ввід інформації про першого менеджера”;m1.getdata ();cout << “\n Ввід інформації про другого менеджера”;m2.getdata ();cout << “\n Ввід інформації про першого вченого”;s1.getdata ();cout << “\n Ввід інформації про першого робочого”;L1.getdata ();//вивід отриманої інформації на екранcout << “\n Інформація про першого менеджера”m1.putdata ();cout << “\n Ввід інформації про другого менеджера”;m2.putdata ();cout << “\n Ввід інформації про першого вченого”;s1.putdata ();cout << “\n Ввід інформації про першого робочого”;L1.putdata ();cout << endl;Return 0;}
У функції main () цієї програми оголошено чотири об'єкти різних класів: два об'єкти класу manager, об'єкт класу Scientist і об'єкт класу laborer. (Звичайно, об'єктів могло бути багато більше, але при цьому виведення програми стало б досить об'ємним.) Вони викликають метод getdata() для отримання інформації про кожних із працівників і метод putdata(), забезпечує виведення цієї інформації.Розглянемо просту взаємодію з даною програмою. Спочатку користувач вводить дані.
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг(0.005 сек.)