Методи класів та множинне успадковування
Розглянемо приклад множинного успадковування. До попередньої програми додамо клас student, в якому зберігатимуться відомості про навчальний заклад, який закінчив студент, а також рівень його освіти. Припустимо, що такі ж відомості нам потрібні також про менеджерів та вчених – працівників компанії. Зробимо відповідні класи похідними також від класу student.
Далі приведений лістінг програми 17.9
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
const int LEN=80;
class student
{private:
char school[LEN];
char degree[LEN];
public:
void getedu()
{cout<<”Школа:”;
cin>>school;
cout<<”Рівень:”;
cin>>degree;
}
void putedu() const
{cout<<”\nШкола=”<<school;
cout<<”\nРівень=”<<degree<<endl;
}
};
//////////////
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:private employce, private student
{private:
char title[LEN];
double dues;
public:
void getdata()
{employce::getdata();
cout<<”\nПосада=”;cin>>title;
cout<<”\nВнески=”;cin>>dues;
student::getedu();
}
void putdata() const
{employce::putdata();
cout<<”\nПосада=”<<title;
cout<<”\nВнески=”<<dues;
student::putedu();
}
};
///////////
class scientist:private employce,private student
{private:
int puts;
public:
void getdata()
{ employce::getdata();
cout<<”\nПублікацій=”;cin>>puts;
student::getedu();
}
void putdata() const
{ employce::putdata();
cout<<”\nПублікацій=”<<puts;
student::putedu();
}
};
////////////
class laborer:public employce
{
};
////////////
int main()
{clrscr();
manager m1;
scientist s1,s2;
laborer l1;
cout<<endl;
cout<<”\nМенеджер 1:”;
m1.getdata();
cout<<”\nВчений 1:”;
s1.getdata();
cout<<”\nВчений 2:”;
s2.getdata();
cout<<”\nРобітник 1:”;
l1.getdata();
cout<<”Менеджер1\n”;
m1.putdata();
cout<<”Вчений1\n”;
s1.putdata();
cout<<”Вчений2\n”;
s2.putdata();
cout<<”Робітник1\n”;
l1.putdata();
bioskey(0);
return 0;
}
Програма 17.9
Функції getdata() і putdata() класів manager і scientist включають в себе такі виклики функцій класу student як
student::getedu();
і
student::putedu();
Ці методи доступні класам manager і scientist, оскільки ці класи є спадкоємцями класу student.
Класи manager і scientist є приватними спадкоємцями класів employce і student. В цьому випадку нема потреби використовувати загальне успадковування, оскільки об’єкти цих класів не користуються методами базових класів. Натомість клас laborer користується методами базового класу, тому в даному випадку успадковування є загальним.
Дата добавления: 2015-08-26; просмотров: 644;