надо написать программу которая представляет собой множественное наследие классов Class1 - Person(базовый класс): фамилия, пост, №кабинета Class2 - Birthday(производный класс от Class1): день, месяц и год рождения Class3 - Salary(производный класс от Class1): зарплата, налбавка Class4 - AllInf(производный класс от Class2 и Class3): №телефона проблема с наследованием классом Class4 класса Class1, т.к. происходит дублирование информации. пробовала сделать Class1 виртуальным для производных классов, но все равно ничего не выходит(((| Код | //------------------------------Class1.h---------------------------- class Person{ public: char LastName[20]; char Post[16]; int Cabinet; public: Person(void); Person(char *LastName, char *Post, int Cabinet); Person(Person &rPerson);
void AddPerson(void); void ShowPerson(void); }; //-----------------------------Class1.cpp-------------------------- #include <iostream> #include "Class1.h" using namespace std;
Person::Person(void) { } Person::Person(char *nLastName, char *nPost, int nCabinet) { for (int i = 0; i < 20; i++) LastName[i] = nLastName[i]; for (int i = 0; i < 16; i++) Post[i] = nPost[i]; Cabinet = nCabinet; } Person::Person(Person &rPerson) { *this = rPerson; } void Person::AddPerson(void) { char nLastName[20]; char nPost[16]; int nCabinet;
cout << "\n LastName & Initials: "; cin >> nLastName; cout << "\n Post: "; cin >> nPost; cout << "\n Cabinet: "; cin >> nCabinet;
for (int i = 0; i < 20; i++) LastName[i]=nLastName[i]; for (int i = 0; i < 16; i++) Post[i] = nPost[i]; Cabinet = nCabinet; } void Person::ShowPerson(void) { printf("|------------------------------------------|\n"); printf("|Last Name & Initials| Post |NCab|\n"); printf("|------------------------------------------|\n"); printf("|%20s|%16s|%4i|\n", LastName, Post, Cabinet); printf("|------------------------------------------|\n"); } //---------------------------------Class2.h--------------------------- #include "Class1.h" class Birthday : public virtual Person { public: int Day; int Month; int Year; public: Birthday(void); Birthday(int Day, int Month, int Year); Birthday(Birthday &rPerson); virtual ~Birthday(void);
void AddPerson(void); void ShowBirthday(void); }; //-------------------------------Class2.cpp--------------------------- #include <iostream> #include "Class2.h" using namespace std;
Birthday::Birthday(void) { } Birthday::Birthday(int nDay, int nMonth, int nYear)/*:Person(char *nLastName)*/ { Day = nDay; Month = nMonth; Year = nYear; } Birthday::Birthday(Birthday &rPerson):Person( rPerson ) { *this = rPerson; } Birthday::~Birthday(void) { } void Birthday::AddPerson(void) { Person::AddPerson();
int nDay; int nMonth; int nYear;
cout << "\n Day: "; cin >> nDay; cout << "\n Month: "; cin >> nMonth; cout << "\n Year: "; cin >> nYear;
Day = nDay; Month = nMonth; Year = nYear; } void Birthday::ShowBirthday(void) { printf("|-----------------------------------------------------|\n"); printf("|Last Name & Initials| Post |NCab| Birthday |\n"); printf("|-----------------------------------------------------|\n"); printf("|%20s|%16s|%4i|%2d.%2d.%4d|\n", LastName, Post, Cabinet, Day, Month, Year); printf("|-----------------------------------------------------|\n"); } //----------------------------------Class3.h--------------------------- #include "Class1.h" class Salary : public virtual Person { public: int Pay; int Raise; public: Salary(); Salary(int Pay, int Raise); Salary(Salary &rPerson); virtual ~Salary(void);
void AddPerson(void); void ShowSalary(void); }; //---------------------------------Class3.cpp------------------------- #include <iostream> #include "Class3.h" using namespace std;
Salary::Salary() { } Salary::Salary(int nPay, int nRaise)/*:Person(char *nLastName)*/ { Pay = nPay; Raise = nRaise; } Salary::Salary(Salary &rPerson):Person( rPerson ) { *this = rPerson; } Salary::~Salary() { } void Salary::AddPerson(void) { Person::AddPerson();
int nPay; int nRaise;
cout << "\n Pay: "; cin >> nPay; cout << "\n Raise: "; cin >> nRaise;
Pay = nPay; Raise = nRaise; } void Salary::ShowSalary(void) { printf("|------------------------------------------------------|\n"); printf("|Last Name & Initials| Post |NCab| Pay |Raise|\n"); printf("|------------------------------------------------------|\n"); printf("|%20s|%16s|%4i|%5i|%5i|\n", LastName, Post, Cabinet, Pay, Raise); printf("|------------------------------------------------------|\n"); } //---------------------------Class4.h------------------------------ //#include "Class2.h" #include "Class3.h" class AllInf : public Birthday, public Salary { public: char Phone[11]; public: AllInf(void); AllInf(char *Phone); AllInf(AllInf &rPerson); virtual ~AllInf(void);
void AddPerson(void); void ShowAllInf(void); }; //-----------------------Class4.cpp----------------------------------- #include <iostream> #include "Class4.h" using namespace std;
AllInf::AllInf(void)/*: Birthday(), Salary()*/ { } AllInf::AllInf(char *nPhone)/*:Person(char *nLastName)*/ { for (int i = 0; i < 11; i++) Phone[i] = nPhone[i]; } AllInf::AllInf(AllInf &rPerson): Birthday( rPerson ), Salary( rPerson ) { *this = rPerson; } AllInf::~AllInf() { } void AllInf::AddPerson(void) { Birthday::AddPerson(); Salary::AddPerson();
char nPhone[11];
cout << "\n Phone: "; cin >> nPhone;
for (int i = 0; i < 11; i++) Phone[i] = nPhone[i]; } void AllInf::ShowAllInf(void) { printf("|-----------------------------------------------------------------------------|\n"); printf("|Last Name & Initials| Post |NCab| Birthday | Pay |Raise| Phone |\n"); printf("|-----------------------------------------------------------------------------|\n"); printf("|%20s|%16s|%4i|%2d.%2d.%4d|%5i|%5i|%11s|\n", LastName, Post, Cabinet, Day, Month, Year, Pay, Raise, Phone); printf("|-----------------------------------------------------------------------------|\n"); } //-------------------------------Main------------------------------ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <tchar.h> #include <iostream> #include <fstream> #include "Class4.h" using namespace std;
void main() { AllInf Men; Men.AddPerson(); Men.ShowAllInf(); //AllInf Men1("Grishchenko O.A.","02","11","1990"); //Men1.ShowSalary(); AllInf Men2(Men); Men2.ShowPerson(); getch(); }
|
|