Sunteți pe pagina 1din 9

Ministerul Educatiei din Republica Moldova

Universitatea Tehnica din Moldova


Facultatea Calculatoare, Informatica si Microelectronica

Raport
Lucrare de laborator nr.4
la Programarea Orientată pe Obiecte (POO)
Programare in C++

A efectuat: st.gr CR-181 Ciobanu Mihai

A verificat: M.Osovschi

Chisinau 2019
LUCRARE DE LABORATOR NR. 4

Tema: Moştenirea şi compoziţia


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.

а) 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.
Codul programului (a) :
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

class Cladire
{
protected:
char adress[100];
int nr_etaj;
int nr_loc;

public:
Cladire () : nr_etaj(0), nr_loc(0)
{}

Cladire(const Cladire &c)


{
strcpy(this -> adress, c.adress);
this -> nr_etaj = c.nr_etaj;
this -> nr_loc = c.nr_loc;
}
friend istream& operator>>(istream &in, Cladire &c)
{
cout << "Introduceti adresa >> ";
in >> c.adress;
cout << "Introduceti numarul de etaje >> ";
in >> c.nr_etaj;
cout << "Introduceti numarul de locuitori >> ";
in >> c. nr_loc;
return (in);
}

friend ostream& operator<<(ostream &out, Cladire &c)


{
return out << "Adresa >> " << c.adress << endl
<< "Nb. etaje >> " << c.nr_etaj << endl
<< "Nb. loc >> " << c.nr_loc << endl;
}

};

class Adm_cladire : public Cladire


{
char admin[100];
int nb_office;

public:
Adm_cladire() : nb_office(0)
{}

Adm_cladire(const Adm_cladire &c)


{
strcpy(this -> admin, c.admin);
this -> nb_office = c.nb_office;
}

friend istream& operator>>(istream &in, Adm_cladire &c)


{
cout << "Introduceti numele administratorului >> ";
in >> c.admin;
cout << "Introduceti numarul oficiului >> ";
in >> c.nb_office;
return (in);
}

friend ostream& operator<<(ostream &out, Adm_cladire &c)


{
return out << "Admin >> " << c.admin << endl
<< "Nb. oficiu >> " << c.nb_office << endl;
}
};

class Loc_cladire : public Cladire


{
char name_loc[100];
int nb_cam;

public:
Loc_cladire() : nb_cam(0)
{}

Loc_cladire(const Loc_cladire &c)


{
strcpy(this -> name_loc, c.name_loc);
this -> nb_cam;
}

friend istream& operator>>(istream &in, Loc_cladire &c)


{
cout << "Introduceti numele locatarului >> ";
in >> c.name_loc;
cout << "Introduceti numarul camerei >> ";
in >> c.nb_cam;
return (in);
}

friend ostream& operator<<(ostream &out, Loc_cladire &c)


{
return out << "Locuitor >> " << c.name_loc << endl
<< "Nb. camera >> " << c.nb_cam << endl;
}
};

int main()
{
Cladire c1;
Adm_cladire c2;
Loc_cladire c3;

cin >> c1;


cin >> c2;
cin >> c3;
cout << c1;
cout << c2;
cout << c3;

system ("pause");
return (0);
}
Codul programului (b) :
#include <iostream>
#include <string>

using namespace std;

class Student
{
public:
string name;
string spec;
float mark;

void ft_define()
{
cout << "\nIntroduceti datele studentului " << endl;
cout << "Numele >> " << endl;
cin >> name;
cout << "Specialitatea >> " << endl;
cin >> spec;
cout << "Balul mediu >> " << endl;
cin >> mark;
}

void ft_del()
{
name = '0';
spec = '0';
mark = 0;
}

friend ostream &operator<<(ostream &os, Student &s)


{
return os << "\nNumele studentului : " << s.name << endl <<
"Specialitatea : " << s.spec << endl << "Balul mediu : " << s.mark <<
endl;
}
};

class Group : public Student


{
public:
Student *group;
int count;
int index;

Group() : group(NULL), count(0), index(0) {}

Group(int count)
{
group = new Student[count];
this->count = count;
index = 0;
}

~Group()
{
delete [] group;
count = 0;
}

void ft_add()
{
group[index].ft_define();
index++;
}

void ft_delete()
{
int i;
cout << "Introduce indexul studentului pentru stergere" << endl;
cin >> i;
group[i].ft_del();
}

void ft_modify()
{
int i;
cout << "Introduceti indexul studentului pentru modificare dateleor" <<
endl;
cin >> i;
group[i].ft_define();
}

float ft_medmark()
{
float sum = 0;
float med = 0;
int i = -1;
while (++i < count)
sum += group[i].mark;
return (med = sum/count);
}

friend ostream &operator<<(ostream &out, Group &g)


{
int i = 0;
float sum = 0;
float med = 0;
out << "Show:" << endl;
while (i < g.index)
{
if (g.group[i].name == "0" && g.group[i].spec == "0" &&
g.group[i].mark == 0)
{
i++;
continue ;
}
cout << "**Studentul > " << i << endl;
out << g.group[i] << endl;
i++;
}
out << "Media:" << endl;
i = -1;
while (++i < g.index)
sum += g.group[i].mark;
med = sum/g.index;
out << med << endl;
return out;
}
};

int main()
{
char choice;
int n;

cout << "**Crearea grupei de studenti:" << endl;


cout << "Introduceti marimea grupei" << endl;
cin >> n;
Group group(n);

while (1)
{
system("cls");
cout << "[1]. Adaugati cite un student." << endl;
cout << "[2]. Eliminati cite un student." << endl;
cout << "[3]. Modificati datele unui student." << endl;
cout << "[4]. Afisarea grupei." << endl;
cout << "[0]. Exit" << endl;
cin >> choice;

if (choice <= '4')


{
if (choice == '0')
break;
if (choice == '1')
group.ft_add();
if (choice == '2')
group.ft_delete();
if (choice == '3')
group.ft_modify();
if (choice == '4')
cout << group;
}
else
cout << "Bad choice !!!" << endl;
system("pause");
}
system("pause");
return (0);
}
Demonstratea programului (a):

Demonstratea programului (b):


Concluzie:

Efectuând lucrarea de laborator s-a pus baza aplicarii in practica a cunostintelor teoretice
referitoare la mostenire. Astfel se poate judeca despre posibilitatile largi acordate de limbajul C++
referitor la manipularea claselor.

S-ar putea să vă placă și

  • Lab1 Poo
    Lab1 Poo
    Document15 pagini
    Lab1 Poo
    ciumac andrian
    100% (1)
  • Lab 2 POO AI-191
    Lab 2 POO AI-191
    Document8 pagini
    Lab 2 POO AI-191
    Carolin
    Încă nu există evaluări
  • Laborator nr.3 POO
    Laborator nr.3 POO
    Document6 pagini
    Laborator nr.3 POO
    MARYAN Pătru
    Încă nu există evaluări
  • Lucrarea de Laborator NR 4 POO
    Lucrarea de Laborator NR 4 POO
    Document10 pagini
    Lucrarea de Laborator NR 4 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lab 1 C++
    Lab 1 C++
    Document13 pagini
    Lab 1 C++
    Maxim Tincu
    Încă nu există evaluări
  • Raport Lab 3 Poo Supraincarcarea Operatorilor
    Raport Lab 3 Poo Supraincarcarea Operatorilor
    Document7 pagini
    Raport Lab 3 Poo Supraincarcarea Operatorilor
    Uyukee
    Încă nu există evaluări
  • Lab 3 Cazacu POO
    Lab 3 Cazacu POO
    Document4 pagini
    Lab 3 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Lucrarea de Laborator NR 5 POO
    Lucrarea de Laborator NR 5 POO
    Document4 pagini
    Lucrarea de Laborator NR 5 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lab2 Poo
    Lab2 Poo
    Document5 pagini
    Lab2 Poo
    Maria Codreanu
    Încă nu există evaluări
  • Lab2 POO
    Lab2 POO
    Document19 pagini
    Lab2 POO
    Alina Axenti
    Încă nu există evaluări
  • Lab3 Poo
    Lab3 Poo
    Document7 pagini
    Lab3 Poo
    Adrian Bodorin
    Încă nu există evaluări
  • Lab 5 Cazacu POO
    Lab 5 Cazacu POO
    Document4 pagini
    Lab 5 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • MMC2 Modulul2
    MMC2 Modulul2
    Document16 pagini
    MMC2 Modulul2
    ViorelRotari
    Încă nu există evaluări
  • Lab 7 Cazacu POO
    Lab 7 Cazacu POO
    Document8 pagini
    Lab 7 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • MMC Lab2
    MMC Lab2
    Document6 pagini
    MMC Lab2
    Mihail Boran
    Încă nu există evaluări
  • Raport: La Disciplina Metode Și Modele de Calcul 1
    Raport: La Disciplina Metode Și Modele de Calcul 1
    Document9 pagini
    Raport: La Disciplina Metode Și Modele de Calcul 1
    Anya Mr
    Încă nu există evaluări
  • Lab Nr. 4 POO
    Lab Nr. 4 POO
    Document3 pagini
    Lab Nr. 4 POO
    Егор Казаков
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Laborator 1 MMC
    Laborator 1 MMC
    Document9 pagini
    Laborator 1 MMC
    Cristian Popa
    Încă nu există evaluări
  • Laborator-2mmc Balan Ion
    Laborator-2mmc Balan Ion
    Document12 pagini
    Laborator-2mmc Balan Ion
    Ion Bn
    Încă nu există evaluări
  • Lab 5 BTD Axenti
    Lab 5 BTD Axenti
    Document6 pagini
    Lab 5 BTD Axenti
    Alina Axenti
    100% (1)
  • CDE Lab 2
    CDE Lab 2
    Document3 pagini
    CDE Lab 2
    Trifan Petru
    Încă nu există evaluări
  • Laborator 5 POO
    Laborator 5 POO
    Document6 pagini
    Laborator 5 POO
    Constantin Palita
    Încă nu există evaluări
  • Lab MMC2
    Lab MMC2
    Document5 pagini
    Lab MMC2
    Maxim
    Încă nu există evaluări
  • Lab 3 BTD
    Lab 3 BTD
    Document6 pagini
    Lab 3 BTD
    Trifan Petru
    100% (1)
  • Asdn Lab 1
    Asdn Lab 1
    Document6 pagini
    Asdn Lab 1
    DmitriiGreen
    Încă nu există evaluări
  • Metode Numerice2
    Metode Numerice2
    Document9 pagini
    Metode Numerice2
    verginarojnita
    Încă nu există evaluări
  • Metode Și Modele de Calcul 2
    Metode Și Modele de Calcul 2
    Document6 pagini
    Metode Și Modele de Calcul 2
    I LOVE ME
    Încă nu există evaluări
  • Lab 3 BTD Axenti
    Lab 3 BTD Axenti
    Document6 pagini
    Lab 3 BTD Axenti
    Alina Axenti
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document17 pagini
    Laborator 3
    DorelDjj
    Încă nu există evaluări
  • Raport 5 CDE
    Raport 5 CDE
    Document7 pagini
    Raport 5 CDE
    crismaruion
    Încă nu există evaluări
  • Ll1 Mmc1 Mereuta Ana Ti-192
    Ll1 Mmc1 Mereuta Ana Ti-192
    Document11 pagini
    Ll1 Mmc1 Mereuta Ana Ti-192
    Anya Mr
    Încă nu există evaluări
  • Lab NR 4 MMC2 Duca Dumitru TI 194
    Lab NR 4 MMC2 Duca Dumitru TI 194
    Document11 pagini
    Lab NR 4 MMC2 Duca Dumitru TI 194
    Santa Claus
    Încă nu există evaluări
  • Lab 2 BTD
    Lab 2 BTD
    Document14 pagini
    Lab 2 BTD
    megadanyx
    Încă nu există evaluări
  • LAb 6 SDA
    LAb 6 SDA
    Document7 pagini
    LAb 6 SDA
    Dima Cucu
    Încă nu există evaluări
  • LFA Lab - 2
    LFA Lab - 2
    Document15 pagini
    LFA Lab - 2
    RoscaFlorin
    100% (1)
  • Lab 6
    Lab 6
    Document4 pagini
    Lab 6
    Егор Казаков
    Încă nu există evaluări
  • Laborator 1 C
    Laborator 1 C
    Document17 pagini
    Laborator 1 C
    Dorin Graur
    Încă nu există evaluări
  • PS NR 2
    PS NR 2
    Document8 pagini
    PS NR 2
    DASdsa fsa f
    Încă nu există evaluări
  • Evaluarea 1 TSSS, Varianta 2
    Evaluarea 1 TSSS, Varianta 2
    Document2 pagini
    Evaluarea 1 TSSS, Varianta 2
    Alex Tronciu
    Încă nu există evaluări
  • Lab 1 LFA
    Lab 1 LFA
    Document10 pagini
    Lab 1 LFA
    Eric Semeniuc
    Încă nu există evaluări
  • Lab4 POO
    Lab4 POO
    Document7 pagini
    Lab4 POO
    megadanyx
    Încă nu există evaluări
  • Laborator-4 MMC1 Balan Ion
    Laborator-4 MMC1 Balan Ion
    Document6 pagini
    Laborator-4 MMC1 Balan Ion
    Ion Bn
    Încă nu există evaluări
  • Lab 4 MN
    Lab 4 MN
    Document3 pagini
    Lab 4 MN
    nn nnn
    Încă nu există evaluări
  • Lab 4 CDE Axenti
    Lab 4 CDE Axenti
    Document6 pagini
    Lab 4 CDE Axenti
    Alina Axenti
    Încă nu există evaluări
  • CDE (Lab 1)
    CDE (Lab 1)
    Document5 pagini
    CDE (Lab 1)
    BlandjLdhui
    Încă nu există evaluări
  • MMC Laborator 1 UTM
    MMC Laborator 1 UTM
    Document12 pagini
    MMC Laborator 1 UTM
    StasLuchianciuc
    Încă nu există evaluări
  • Lab APA 4
    Lab APA 4
    Document12 pagini
    Lab APA 4
    AlionaCrigan
    Încă nu există evaluări
  • Lab 4
    Lab 4
    Document4 pagini
    Lab 4
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Lab4 ASDN
    Lab4 ASDN
    Document3 pagini
    Lab4 ASDN
    Dinu Dogaru
    Încă nu există evaluări
  • Lab 6 Cazacu POO
    Lab 6 Cazacu POO
    Document5 pagini
    Lab 6 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Lab 4 Apa
    Lab 4 Apa
    Document21 pagini
    Lab 4 Apa
    crismaruion
    Încă nu există evaluări
  • Lab 2 MMC Boj
    Lab 2 MMC Boj
    Document12 pagini
    Lab 2 MMC Boj
    Andrian Brinzan
    Încă nu există evaluări
  • CDE (Lab 2)
    CDE (Lab 2)
    Document5 pagini
    CDE (Lab 2)
    BlandjLdhui
    Încă nu există evaluări
  • Lab1 MMC
    Lab1 MMC
    Document4 pagini
    Lab1 MMC
    Gheorghe Rotari
    Încă nu există evaluări
  • Lucrarea de Laborator NR 3 POO
    Lucrarea de Laborator NR 3 POO
    Document4 pagini
    Lucrarea de Laborator NR 3 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Laborar 4 Programare
    Laborar 4 Programare
    Document13 pagini
    Laborar 4 Programare
    cristian
    Încă nu există evaluări
  • Lab 4 Cazacu POO
    Lab 4 Cazacu POO
    Document8 pagini
    Lab 4 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Lab7C 1 1
    Lab7C 1 1
    Document7 pagini
    Lab7C 1 1
    Cristian Conea
    Încă nu există evaluări
  • Poo Baltoi
    Poo Baltoi
    Document20 pagini
    Poo Baltoi
    AndreeaPopescu
    Încă nu există evaluări