Documente Academic
Documente Profesional
Documente Cultură
RAPORT
despre lucrarea de laborator nr.4
la disciplina: POO
Chişinău – 2017
Scopul lucrării:
• studierea moştenirii, avantajele şi dezavantajele;
• studierea compoziţiei;
• studierea regulilor de definire a moştenirii şi compoziţiei;
• studierea formelor de moştenire;
• studierea iniţializatorilor;
• principiul de substituţie;
• moştenirea şi compoziţia – ce să alegem.
Sarcina lucrării:
Varianta 7
а) De creat o ierarhie a claselor clădire – administrarea clădirii – clădire de locuit. Determinaţi
fluxul de ieşire şi fluxul de intrare, constructorul de copiere, operatorul de atribuire prin funcţia
corespunzătoare a clasei de bază.
b) De creat clasa student, care are un nume, specialitate, anul de învăţământ şi balul mediu.
Determinaţi funcţia de definire, schimbare a datelor şi comparare. Pentru sarcina câmpurilor
textuale se foloseşte operatorul new. Determinaţi constructorul, destructorul şi alte funcţii
necesare. Creaţi clasa grupa, care conţine studenţi (o cantitate nelimitată). Definiţi metodele de
adăugare şi eliminare a studenţilor, determinarea balului mediu pe grupă, constructorii,
destructorii şi alte funcţii necesare.
Listingul programului:
// 7.
// a.
/*
#include <iostream>
#include <cstdlib>
#include <string.h>
class cladire
{
protected:
char adresa[20];
char oras[20];
int nr_etaj;
public:
cladire(){}
cladire(cladire &ob2)
{
strcpy(this->adresa, ob2.adresa);
strcpy(this->oras, ob2.oras);
this->nr_etaj = ob2.nr_etaj;
}
~cladire(){}
};
class administratie
{
protected:
char Nume_Admin[20];
char Prenume_Admin[20];
int nr_locuinte;
public:
administratie(){}
administratie(administratie &ob2)
{
strcpy(this->Nume_Admin, ob2.Nume_Admin);
strcpy(this->Prenume_Admin, ob2.Prenume_Admin);
this->nr_locuinte = ob2.nr_locuinte;
}
~administratie(){}
};
public:
cladire_locuit(char *NumeLocuitor, char *PrenumeLocuitor, char *adresa, char *oras, int nr_etaj,
char*NumeAdmin, char*PrenumeAdmin): cladire(adresa,oras,nr_etaj),
void Arata()
{
cout << NumeLocuitor << " " << PrenumeLocuitor << " Adresa- " << adresa << " Oras- " << oras <<
"\n Admin-" << Nume_Admin << " " << Prenume_Admin << "\nNr_Locuinte-" << nr_locuinte << endl;
}
};
int main()
{
cladire_locuit Om1("Ionescu", "Ion", "Igor Vieru", "Chisinau", 9, "Florin", "Maria");
cladire_locuit Om2(Om1);
Om1.Arata();
Om2.Arata();
cin.get();
return 0;
}
*/
// b.
#include <iostream>
#include <string.h>
#include <fstream>
class Student
{
protected:
char* Nume;
char* Prenume;
char* specialitate;
int an;
double bal;
public:
Student(){}
Student(char* Nume, char*Prenume, char*specialitate, int an, double bal)
{
this->Nume = new char[strlen(Nume + 1)];
this->Nume = Nume;
this->Prenume = new char[strlen(Prenume + 1)];
this->Prenume = Prenume;
this->specialitate = new char[strlen(specialitate + 1)];
this->specialitate = specialitate;
this->an = an;
this->bal = bal;
}
void arata()
{
cout << Nume << " " << Prenume << " " << "studiaza " << specialitate << " si e in anul " << an << "
cu media " << bal << endl;
}
~Student(){}
};
int i = 0;
class Grupa
{
protected:
char*NumeGrupa;
int nr_grupa;
double bal_mediuGr;
int nr_stud=0;
Student S[100];
public:
Grupa() {}
Grupa(char*NumeGrupa, int nr_grupa)
{
this->NumeGrupa = new char[strlen(NumeGrupa + 1)];
this->NumeGrupa = NumeGrupa;
this->nr_grupa = nr_grupa;
this->nr_grupa, nr_grupa;
}
void ShowStudents()
{
cout << "\nGrupa " << NumeGrupa<<nr_grupa << endl;
for (int j = 0; j < nr_stud; j++)
{
S[j].arata();
}
}
void BalMediu()
{
for (int j = 0; j < nr_stud; j++)
{
bal_mediuGr += S[j].balStud();
}
bal_mediuGr = bal_mediuGr / nr_stud;
cout << "\nGrupa " << NumeGrupa <<nr_grupa<< " are media " << bal_mediuGr << endl;
}
~Grupa(){}
};
int main()
{
Grupa Gr1("C", 162);
Student S[100];
Student S2("Petru", "Locopenco", "Calculatoare", 3, 7.8);
int n;
char*nume;
char*prenume;
char*specialitate;
int an;
double bal;
ifstream f1("StudentiCalc.txt");
f1 >> n;
comparare(S2, S[1]);
cin.get();
return 0;
}