Рівні успадковування
Похідні класи можуть виступати як базові класи для інших похідних класів. Розглянемо маленьку програму як приклад такого випадку:
class A
{ };
class B:public A
{ };
class c:public B
{ }
Тут клас В є похідним класу А, а клас С – похідним класу В. Процес може розвиватися далі.
Розглянемо конкретніший приклад. Припустімо, що ми хочемо ввести в організації (програма 17.7) посаду бригадира. Відповідний клас називатиметься foreman, базуватиметься на класі laborer і міститиме порівняно з цим класом додаткове поле «процент виконання норми виробітку».
Далі приведений лістінг програми 17.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;
}
Програми 17.8
Дата добавления: 2015-08-26; просмотров: 556;