Documente Academic
Documente Profesional
Documente Cultură
Catedra ISA
RAPORT
Lucrarea de laborator nr.4
la Programarea Orientată pe Obiecte
A efectuat:
st. gr. AI-161 S. Chiu
A verificat:
Lector univ. M. Oșovschi
Chişinău 2017
Lucrarea de laborator nr.4
class Camera
{
protected:
float suprafata;//m^2
public:
5
Camera()
{
suprafata = 25;
}
Camera(float suprafata)
{
this->suprafata = suprafata;
}
Camera (Camera &ob2)
{
suprafata = ob2.suprafata;
}
void show_Camera()
{
cout<<"Suprafata Camerei:(m^2) "<<suprafata<<endl;
}
float get_suprafata_Camera()
{
return suprafata;
}
void set_suprafata_Camera(float suprafata)
{
this->suprafata = suprafata;
}
~Camera()
{
cout<<"S-au sters datele despre suprafata camerei!"<<endl;
}
};//end class Camera
class Apartament_cu_o_odaie
{
protected:
Camera odaie;
Camera bucatarie;
us etaj;
public:
Apartament_cu_o_odaie()
{
odaie.set_suprafata_Camera(30);
bucatarie.set_suprafata_Camera(20);
etaj = 1;
cout<<"Constructor prestabilit (Apartament_cu_o_odaie)."<<endl;
}
6
Apartament_cu_o_odaie(float suprafata_odaie, float suprafata_bucatarie, us
etaj)
{
odaie.set_suprafata_Camera(suprafata_odaie);
bucatarie.set_suprafata_Camera(suprafata_bucatarie);
this->etaj = etaj;
}
Apartament_cu_o_odaie(Apartament_cu_o_odaie &ob2)
{
odaie.set_suprafata_Camera(ob2.odaie.get_suprafata_Camera());
bucatarie.set_suprafata_Camera(ob2.bucatarie.get_suprafata_Camera(
));
etaj = ob2.etaj;
}
void show_Apartament_cu_o_odaie()
{
cout<<"Apartament cu o odaie:"<<endl;
cout<<"Suprafata odaii:(m^2)
"<<odaie.get_suprafata_Camera()<<endl;
cout<<"Suprafata bucatariei:(m^2)
"<<bucatarie.get_suprafata_Camera()<<endl;
cout<<"Etajul: "<<etaj;
}
float get_suprafata_odaie()
{
return odaie.get_suprafata_Camera();
}
float get_suprafata_bucatarie()
{
return bucatarie.get_suprafata_Camera();
}
us get_etaj()
{
return etaj;
}
void set_suprafata_odaie(float suprafata_odaie)
{
odaie.set_suprafata_Camera(suprafata_odaie);
}
void set_suprafata_bucatarie(float suprafata_bucatarie)
{
bucatarie.set_suprafata_Camera(suprafata_bucatarie);
}
void set_etaj(us etaj)
{
7
this->etaj = etaj;
}
~Apartament_cu_o_odaie()
{
cout<<"S-au sters datele despre Apartament cu o odaie"<<endl;
}
};//end class Apartament_cu_o_odaie
int main()
{
us f;
us n;
float suprafata_odaii, suprafata_bucatarie;
us etaj;
char adresa[30];
cout<<"Sarcina 1:************************"<<endl;
Student_Diplomant ob1, ob2("Ion", "AI", 3, 9.0f, "Redresor Monofazat dubla
alternanta");
cout<<"\nStudentul Diplomant 1: "<<endl;
ob1.show_SD();
cout<<"\nSchimbati datele Studentului Diplomant 1"<<endl;
ob1.change_StudentD();
cout<<"Studentul Diplomant 2: "<<endl;
ob2.show_SD();
cout<<"\nSchimbati datele Studentului Diplomant 2"<<endl;
ob2.change_StudentD();
ob2.show_SD();
cout<<"\nComparatie Studentul 1 ? Studentul 2.(Dupa nota medie)"<<endl;
ob1.compare_Student(ob2);
cout<<"\n\n"<<"Sarcina 2:************************"<<endl;
cout<<"Dati numarul de apartamente cu o odaie si adresa:";
cin>>n;
Apartament_cu_o_odaie_adr *apartamente;
apartamente = new Apartament_cu_o_odaie_adr[n];
9
cout<<"\nDati datele despre fiecare apartament>>"<<endl;
for (int i=0; i<n; i++)
{
cout<<"\nApartamentul nr. "<<i+1<<">>";
cout<<"\nIntroduceti suprafata odaii:(m^2) ";
cin>>suprafata_odaii;
cout<<"Introduceti suprafata bucatariei:(m^2) ";
cin>>suprafata_bucatarie;
cout<<"Introduceti etajul: ";
cin>>etaj;
cout<<"Introduceti adresa: ";
fflush(stdin);
gets(adresa);
apartamente[i].InitData(suprafata_odaii, suprafata_bucatarie, etaj,
adresa);
}
cout<<"\nDoriti sa afisati apartamentele? (1/0)";
cin>>f;
if (f)
for (int i=0; i<n; i++)
{
cout<<"\nApartamentul nr. "<<i+1<<">>";
apartamente[i].show_Apartament_cu_o_odaie_adr();
}
f = 0;
cout<<"\nDoriti sa modificati datele despre apartamente? (1/0)";
cin>>f;
if (f)
for (int i=0; i<n; i++)
{
f = 0;
cout<<"\nApartamentul nr. "<<i+1<<">>";
cout<<"\nSuprafata odaii:(m^2)
"<<apartamente[i].get_suprafata_odaie();
cout<<"\nModificati suprafata odaii? (1/0)";
cin>>f;
if (f)
{
cout<<"Introduceti suprafata odaii:(m^2) ";
cin>>suprafata_odaii;
apartamente[i].set_suprafata_odaie(suprafata_odaii);
}
f = 0;
cout<<"\nSuprafata bucatariei:(m^2)
"<<apartamente[i].get_suprafata_bucatarie();
10
cout<<"\nModificati suprafata bucatariei? (1/0)";
cin>>f;
if (f)
{
cout<<"Introduceti suprafata bucatariei:(m^2) ";
cin>>suprafata_bucatarie;
apartamente[i].set_suprafata_bucatarie(suprafata_bucatarie);
}
f = 0;
cout<<"\nEtajul: "<<apartamente[i].get_etaj();
cout<<"\nModificati etajul? (1/0)";
cin>>f;
if (f)
{
cout<<"Introduceti etajul: ";
cin>>etaj;
apartamente[i].set_etaj(etaj);
}
f = 0;
cout<<"\nAdresa: "<<apartamente[i].get_adresa();
cout<<"\nModificati adresa? (1/0)";
cin>>f;
if (f)
{
cout<<"Introduceti adresa: ";
fflush(stdin);
gets(adresa);
apartamente[i].set_adresa(adresa);
}
f = 0;
cout<<"\nDoriti sa afisati datele despre apartament? (1/0)";
cin>>f;
if (f)
apartamente[i].show_Apartament_cu_o_odaie_adr();
}//end for
system("PAUSE");
}//end main()
11
Rezultatele obținute:
12
Figura 2 – Screenshot-ul rezultatelor Sarcinii 2
13
Figura 3 – Screenshot-ul rezultatelor Sarcinii 2 (continuare)
Concluzii:
În lucrarea dată de laborator ne-am familiarizat cu noțiunile de moștenire și
compoziție în cazul claselor. Ca sarcini am avut de implementat 2 clase finale ce
constau în primul caz dintr-o clasă de bază, cealaltă rezultând a fi de bază, iar în
cel de-al doilea caz am avut o clasă de bază, apoi o clasă ce o include pe prima de
bază prin compoziție și apoi o clasă derivată din cea de-a doua.
În cadrul funcției main() am realizat o serie de exemplificări a ambelor clase
finale pentru a dovedi că programul a fost gîndit corect și că am înțeles cu success
această temă pentru lucrarea de laborator.
14