Documente Academic
Documente Profesional
Documente Cultură
REPUBLICII MOLDOVA
UNIVERSITATEA TEHNICĂ A MOLDOVEI
FACULTATEA CALCULATOARE, INFORMATICĂ ŞI
MICROELECTRONICĂ
DEPARTAMENTUL INFORMATICĂ ȘI INGINERIA
SISTEMELOR
RAPORT
pentru lucrarea de laborator nr.4
la disciplina: Programare Orientată pe Obiecte
cu tema: Moștenirea și Compoziția
A elaborat: A verificat:
st. gr. IA-171, Lector superior,
Bodorin Adrian Plotnic Constantin
CHIŞINĂU 2018
Scopul lucrării:
Varianta:5
а) De creat clasa lichid, care conţine informaţie despre denumire (pointer la cîmp), densitate.
Determinaţi constructorii, destructorii, operatorii fluxului de intrare. Creaţi a clasă derivată –
băuturi alcoolice, care conţin tărie. Determinaţi funcţiile predestinate densităţii şi tăriei.
b) De creat clasa buton, care conţine un text anumit. Determinaţi constructorii şi metodele de
acces. Creaţi clasa fereastra, care conţine un buton şi coordonatele ferestrei. Definiţi
constructorii şi destructorii. Definiţi clasa derivată fereastra cu buton şi cu un mesaj. Definiţi
constructorii, destructorii şi operatorii fluxului de ieşire.
Codul – sursă:
#include<iostream>
#include<cstring>
#include<cstdlib>
class lichid{
protected:
float g;//Densitate
public:
strcpy(this->name,name);
this->g = g;
cin>>name;
cin>>g;
cout<<"\n\t*****************************************************"<<endl;
~lichid(){//Destructor
};
protected:
float tarie;
public:
alcool(){
void in(){
lichid ::in() ;
void out(){
cout<<"\n\t*****************************************************"<<endl;
lichid :: out();
};
class fereastra{
protected:
int X, Y;
char *mesaj;
public:
X = 0;
Y = 0;
this -> X = x;
this -> Y = y;
strcpy(this->mesaj,m);
cin>>X;
cout<<"\t >Introdu coordonatele Y: ";
cin>>Y;
cin>>mesaj;
cout<<"\t* X = "<<X<<endl;
cout<<"\t* Y = "<<X<<endl;
cout<<"\n\t*****************************************************"<<endl;
~fereastra(){//Destructor
};
protected:
char *nume;
public:
buton(){
void in(){
cin>>nume;
fereastra ::in() ;
void out(){
cout<<"\n\t*****************************************************"<<endl;
fereastra :: out();
};
int main(){
int n, f, t, m;
while (1){
t = 1;
system("cls");
cout <<"\t+------------------------+"<<endl;
cout <<"\t+------------------------+"<<endl;
cin>>n;
switch (n){
case 1 : {
alcool *O;
cin>>n;
O = new alcool[n];
cout <<
"\n\t*****************************************************"<<endl;
cout <<
"\n\t*****************************************************"<<endl;
O[i].out();
if (f)
break;
else
return EXIT_SUCCESS;
case 2 :{
buton *O;
cin>>n;
O = new buton[n];
cout <<
"\n\t*****************************************************"<<endl;
O[i].in();
cout <<
"\n\t*****************************************************"<<endl;
O[i].out();
if (f)
break;
else
return EXIT_SUCCESS;
case 0 : {
return EXIT_SUCCESS;
default :{
if (f)
break;
else
return EXIT_SUCCESS;
}
Concluzie:
În urma efectuării acestei lucrări de laborator, am studiat
moștenirea, avantajele și dezavantajele ei, regulile de definire a
moștenirii și compoziției, formele de moștenire, inițializatorii și
principiul de substituție. Astfel, am observat că moștenirea are unele
avantaje, precum micşorarea cantităţii codului şi folosirea lui repetată,
micşorarea cantităţii erorilor şi a preţului de cost, o interfaţă unică şi
substituţia, dar și mărirea vitezei de prelucrare.
Pe parcursul realizării lucrării de laborator, am observat că dacă în
clasa de bază și în derivată doi membri (câmp de dată sau metodă) se
numesc la fel, atunci, dacă în clasa derivată se va dori să se facă referire
la membrii clasei de bază, se va folosi operatorul rezoluție precedat de
numele clasei derivate. Astfel, referirea va fi în modul implicit la
membrii clasei derivate.
În concluzie, moștenirea este acea proprietate a claselor prin care o
clasă nouă construită poate prelua datele și metodele unei clase mai
vechi.