русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Рівні успадковування


Дата додавання: 2014-04-22; переглядів: 936.


Похідні класи можуть виступати як базові класи для інших похідних класів. Розглянемо маленьку програму як приклад такого випадку:

class A

{ };

class B:public A

{ };

class c:public B

{ }

Тут клас В є похідним класу А, а клас С – похідним класу В. Процес може розвиватися далі.

Розглянемо конкретніший приклад. Припустімо, що ми хочемо ввести в організації (програма 11.7) посаду бригадира. Відповідний клас називатиметься foreman, базуватиметься на класі laborer і міститиме порівняно з цим класом додаткове поле «процент виконання норми виробітку».

Далі приведений лістінг програми 11.8.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

const int LEN=80;

////////////

class employce

{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 employce

{private:

char title[LEN];

double dues;

public:

void getdata()

{employce::getdata();

cout<<”\nPosada=”;cin>>title;

cout<<”\nVnesky=”;cin>>dues;

}

void putdata() const

{employce::putdata();

cout<<”\nПосада=”<<title;

cout<<”\nВнески=”<<dues;

}

};

//////////

class scientist:public employce

{private:

int puts;

public:

void getdata()

{ employce::getdata();

cout<<”\nПублікації=”;cin>>puts;

}

void putdata() const

{ employce::putdata();

cout<<”\nПублікації=”<<puts;

}

};

////////////

class laborer:public employce

{

};

/////////

class foreman:public laborer

{private:

double quotas;

public:

void getdata()

{laborer::getdata();

cout <<” Норма виробітку=”;cin>>quotas;

}

void putdata() const

{laborer::putdata();

cout <<”\n Норма виробітку =”<<quotas;

}

};

//////////

int main()

{clrscr();

laborer l1;

foreman f1;

//Ввід

cout<<endl;

cout<<”\nРобітник 1”;

l1.getdata();

cout<<”\nБригадир 1”;

f1.getdata();

 

//Вивід

cout<<”\n\nl1”<<endl;

l1.putdata();

cout<<”\n\nf1”<<endl;

f1.putdata();

 

bioskey(0);

return 0;

}

Програми 11.8

 

Множинне успадковування

Клас може бути похідним не тільки від одного базового класу, а й від багатьох. Цей випадок називається множинним успадковуванням. Синтаксис опису множинного успадковування схожий на випадок простого успадковування. Далі приведений приклад множинного успадковування:

class A

{ };

class B

{ };

clacc C:public A, public B

{ };

Базові класи класу С перелічені після двокрапки в рядку опису класу і розділені комами.

 


<== попередня лекція | наступна лекція ==>
Вибір специфікаторів доступу | Методи класів та множинне успадковування


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн