Conan
Moderator
Inregistrat: acum 17 ani
Postari: 198
|
|
/*Sa se implementeze clasa individ care va contine urmatoarele date membru: varsta si nationalitate. Functii membru:constructor cu parametru,destructor, functie de afisare si functie de returnare a nationalitatii. Din clasa individ se va deriva clasa angajat. Date membru:nume,prenume,spe- cializare. Functii membru:constructor cu parametru,destructor,functie de afisare,functie de modificare a specializarii. Din clasa angajat se va deriva clasa programator.Date membru:salariu,tip programare.Functii membru:constructor,destructor,functie de afisare,functie de modificare a salariului,functie de returnare a comp.tip programare. Suplimentar vor exista 2 functii friend si 2 functii inline.In main trebuie sa existe 3 obiecte din cele 3 clase pentru care apelam functiile apelate anterior*/
#include<iostream.h> #include<string.h> #include<conio.h>
//definirea clasei de baza individ class individ //cuvant rezervat class urmat de numele clasei {int varsta; char *nationalitate;//in zona privata se declar variabile,cuv rezervat private: e optional public: //cuv rezervat public: //in zona publica declaram metode(functii) individ(int,char);//definire constructor cu parametru individ(individ& );//definire constructor de copiere ~individ(); //definire destructor void afisare(); //definire functie de afisare char *getnatiune(); };
//definirea clasei derivate angajat din clasa individ class angajat:public individ {char *nume; char *prenume; char *spec; public: angajat(char*,char*,char*,int,char*); ~angajat(); void afisare(); void set_specializare(char*); };
//definirea clasei derivate programator din clasa angajat class programator:public angajat {int salariu; char *tipprg; public: programator(char*,char*,char*,int,char*,int,char*); ~programator(); void afisare(); char *getprogramare(); };
//definirea constructorului cu parametru individ:individ(int v,char *nat) {varsta=v; nationalitate=new char[strlen(nat)+1]; assert(nationalitate!=0); strcpy(nationalitate,nat); }
//definirea constructorului de copiere pentru clasa individ individ::individ(individ&X) {varsta=X.varsta; nationalitate=new char[strlen(X.nationalitate)+1]; strcpy(nationalitate,X.nationalitate); }
//definirea destructorului din clasa individ individ::~individ() {delete nationalitate; }
//functia de afisare pentru clasa individ void individ::afisare() {cout<<"\nPersoana este de nationalitate:"<<nationalitate<<"si are"<<varsta<<"ani"; }
//functia de returnare a nationalitatii pentru clasa individ char *individ::getnatiune() {return nationalitate; }
//definirea constructorului cu parametru din clasa angajat angajat::angajat(char *num,char *pren,char *s):individ(v,n) {nume=new char[strlen(num)+1]; strcpy(nume,num); prenume=new char[strlen(pren)+1]; strcpy(prenume,pren); spec=new char[strlen(s)+1]; strcpy(spec,s); varsta=v; }
//definirea destructorului din clasa angajat angajat::~angajat() {delete nume; delete prenume; delete spec; }
//functia de afisare pentru clasa angajat void angajat::afisare() {individ::afisare() cout<<nume<<"\n"<<prenume<<"\n"<<specializare; }
//functia de modificare a specializarii a clasei derivate angajat void angajat::set_specializare(char *s) {cin>>s; spec=new char[strlen(s)+1]; strcpy(spec,s); }
//functia de modificare a salariului pt clasa derivata programator void programator::set_specializare(int sal) {salariu=sal; }
//functia de returnare a componentei tip programare pentru clasa programator char *programator::getprogramare() {return tipprg; }
void main() {clrscr(); //creaza un obiect numit ind de tip individ(adica din clasa din care face parte) individ ind(23,"roman" ); //creaza un obiect numit a de tip angajat(adica din clasa din care face parte) angajat a("Popescu","Virgil","programator",15,"roman" ); programator p("Popescu"," Virgil",20000,"C++","Pascal","roman","programator" ); //creaza un obiect numit p de tip programator(adica din clasa din care face parte) ind.afisare(); //apeluri functii de afisare a.afisare(); p.afisare(); }
|
|