Sunteți pe pagina 1din 8

Universitatea Tehnic a Moldovei

FCIM
Catedra Calculatoare

RAPORT
la lucrarea de laborator nr. 4
la programarea in limbajul C++

Tema: Motenirea i Compoziia


Varianta 13

A efectuat:

st. gr. C-151 Enachi Nicolae

A verificat:

Lector superior Constantin Plotnic

Chiinu 2016
Scopul lucrrii:
studierea motenirii, avantajele i dezavantajele;
studierea compoziiei;
studierea regulilor de definire a motenirii i compoziiei;
studierea formelor de motenire;
studierea iniializatorilor;
principiul de substituie;
motenirea i compoziia ce s alegem.

Sarcina:
) De creat o ierarhie a claselor joc joc sportiv volei. Determinai constructorii, destructorii,
operatorii de atribuire i alte funcii obligatorii.
b) De creat clasa roata, care conine raz. Determinai constructorii i metodele de acces. Creai
clasa automobil, care conine roi i un cmp care reprezint firma productoare. Creai o clas derivat
autocamion care se deosebete prin tonaj. Determinai constructorii, destructorii i alte funcii necesare.

Codul Programului:
a) Joc Joc sportiv Volei
#include
#include
#include
#include

"stdafx.h"
<iostream>
<conio.h>
<string>

using namespace std;


class Joc{
int nJ;
public:
Joc();
Joc(int nJ);
Joc(Joc& joc);
~Joc();
Joc& operator = (Joc& joc);
friend ostream& operator << (ostream& os, Joc& joc);
friend istream& operator >> (istream& is, Joc& joc);
};
class JocSportiv : public Joc{
string dnmr;
public:
JocSportiv();
JocSportiv(const string& dnmr);
JocSportiv(Joc& joc, const string& dnmr);
JocSportiv(JocSportiv& jocSportiv);
~JocSportiv();
JocSportiv& operator = (JocSportiv& jocSportiv);
friend ostream& operator << (ostream& os, JocSportiv& jocSportiv);
friend istream& operator >> (istream& is, JocSportiv& jocSportiv);
};
1

class Volei : public JocSportiv{


int lt, lg;
public:
Volei();
Volei(int lt, int lg);
Volei(JocSportiv& jocSportiv, int lt, int lg);
Volei(Volei& volei);
~Volei();
Volei& operator = (Volei& volei);
friend ostream& operator << (ostream& os, Volei& volei);
friend istream& operator >> (istream& is, Volei& volei);
};
Joc::Joc(){}
Joc::Joc(int nJ) : nJ(nJ){}
Joc::Joc(Joc& joc) : nJ(joc.nJ){}
Joc::~Joc(){
nJ = 0;
}
ostream& operator << (ostream& os, Joc& joc) {
os << "\n\n Numarul de jucatori: " << joc.nJ;
return os;
}
istream& operator >> (istream& is, Joc& joc) {
cout << "\n Introduceti numarul de jucatori: ";
is >> joc.nJ;
return is;
}
Joc& Joc::operator = (Joc& joc){
if (this == &joc)
return (*this);
nJ = joc.nJ;
return (*this);
}
JocSportiv::JocSportiv(){}
JocSportiv::JocSportiv(const string& dnmr) : dnmr(dnmr){}
JocSportiv::JocSportiv(Joc& joc, const string& dnmr)
: Joc(joc), dnmr(dnmr){}
JocSportiv::JocSportiv(JocSportiv& jocSportiv) : Joc(jocSportiv),
dnmr(jocSportiv.dnmr){}
JocSportiv::~JocSportiv(){}
ostream& operator << (ostream& os, JocSportiv& jocSportiv) {
os << dynamic_cast<Joc&>(jocSportiv);
os << "\n Denumirea Echipei: " << jocSportiv.dnmr;
return os;
}
istream& operator >> (istream& is, JocSportiv& jocSportiv) {
is >> dynamic_cast<Joc&>(jocSportiv);
cout << " Denumirea Echipei: ";
2

is >> jocSportiv.dnmr;
return is;
}
JocSportiv& JocSportiv::operator = (JocSportiv& jocSportiv){
if (this == &jocSportiv)
return *this;
dynamic_cast<Joc&>((*this)) = dynamic_cast<Joc&>(jocSportiv);
dnmr = jocSportiv.dnmr;
return *this;
}
Volei::Volei() {}
Volei::Volei(int lt, int lge) : lt(lt), lg(lg){}
Volei::Volei(JocSportiv& jocSportiv, int lt, int lg): JocSportiv(jocSportiv), lt(lt), lg(lg)
{}
Volei::Volei(Volei& volei) : JocSportiv(volei),lt(volei.lt), lg(volei.lg){}
Volei::~Volei(){
lt = 0;
lg = 0;
}
ostream& operator << (ostream& os, Volei& volei) {
os << dynamic_cast<JocSportiv&>(volei);
os << "\n Latimea terenului: " << volei.lt;
os << "\n Lungimea terenului: " << volei.lg;
return os;
}
istream& operator >> (istream& is, Volei& volei) {
is >> dynamic_cast<JocSportiv&>(volei);
cout << " Introduceti latimea terenului: ";
is >> volei.lt;
cout << " Introduceti lungimea terenului: ";
is >> volei.lg;
return is;
}
Volei& Volei::operator = (Volei& volei){
if (this == &volei)
return (*this);
dynamic_cast<JocSportiv&>((*this)) = dynamic_cast<JocSportiv&>(volei);
lt = volei.lt;
lg = volei.lg;
return (*this);
}
int main(){
Joc j(6);
JocSportiv js(j, "Echipa1");
Volei vl1(js, 6, 18);
Volei vl2(vl1);
Volei vl3;
Volei vl4;
3

vl3 = vl2;
cin >> vl4;
cout << "\n\n
cout << vl1;
cout << " \n\n
cout << vl2;
cout << " \n\n
cout << vl3;
cout << " \n\n
cout << vl4;
_getch();
return 0;

->Constructor cu parametri";
->Constructor de copiere";
->vl3=vl2";
->Supraincarcarea operatorului de intrare";

Rezultatele Testrii:

b) Roata-Automobil-Autocamion
#include
#include
#include
#include

"stdafx.h"
<iostream>
<string>
<conio.h>

using namespace std;


class Roata{
public:
float rz;
Roata();
Roata(float raza);
~Roata();
void setRz(float raza) {
rz = raza;
}
float getRz() {
return rz;
}
};
class Automobil{
Roata rt;
string pr;
public:
Automobil();
Automobil(Roata& rt, const string& pr);
~Automobil();
friend ostream& operator << (ostream& cout, Automobil& automobil);
friend istream& operator >> (istream& cin, Automobil& automobil);
};
class Autocamion : public Automobil{
double tn;
public:
Autocamion();
Autocamion(double tn);
Autocamion(Automobil& automobil, double tn);
~Autocamion();
friend istream& operator >> (istream& cin, Autocamion& autocamion);
friend ostream& operator << (ostream& cout, Autocamion& autocamion);
};
Roata::Roata(){}
Roata::Roata(float raza) : rz(raza){
}
Roata::~Roata(){
rz = 0;
}
5

Automobil::Automobil(){}
Automobil::Automobil(Roata& rt, const string& pr) : rt(rt), pr(pr){}
Automobil::~Automobil(){
rt.~Roata();
}
ostream& operator << (ostream& os, Automobil& automobil){
os << "\n\n Firma Producatoare: " << automobil.pr;
os << "\n Raza rotilor: " << automobil.rt.getRz();
return os;
}
istream& operator >> (istream& is,
Automobil& automobil){
cout << "\n Introduceti firma producatoare: ";
is >> automobil.pr;
float raza;
cout << " Introduceti raza rotilor: ";
is >> raza;
automobil.rt.setRz(raza);
return is;
}
Autocamion::Autocamion() : tn(0){}
Autocamion::Autocamion(double tn) : tn(tn){}
Autocamion::Autocamion(Automobil& automobil, double tn) :
Automobil(automobil), tn(tn){}
Autocamion::~Autocamion(){
tn = 0;
}
istream& operator >> (istream& is, Autocamion& autocamion){
is >> dynamic_cast< Automobil& >(autocamion);
cout << " Introduceti tonajul: ";
is >> autocamion.tn;
return is;
}
ostream& operator << (ostream& os, Autocamion& autocamion){
os << dynamic_cast< Automobil& >(autocamion);
os << "\n Tonajul: " << autocamion.tn;
return os;
}
int main(){
Roata r(22.5);
Automobil a(r, "Scania");
Autocamion ac(a, 6.95);
Autocamion ac1;
cin >> ac1;
cout << ac << endl;
cout << ac1 << endl;
_getch();
return 0;
}

Rezultatele Testrii:

Concluzie:
Prin intermediul lucrrii respective de laborator am studiat dou componente
foarte importante din cadrul limbajului de programare C++ i anume mo tenire i
compoziia. Pentru aceasta am creat o ierarhie de clase i am folosit constructori att n
clasele de baz ct i n clasele derivate penru a observa diferena fa de sintaxa de declarare
a constructorilor dintr-o clas simpl. n final putem spune c motenirea i compozi ia sunt
instrumente foarte puternice n cadrul C++ prin intermediul crora se poate crea un cod mai
structurat i mai abstract.

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

  • Proiect Baze de Date - Nota 8-9 - ASE CSIE
    Proiect Baze de Date - Nota 8-9 - ASE CSIE
    Document14 pagini
    Proiect Baze de Date - Nota 8-9 - ASE CSIE
    IoanaCiobanu
    Încă nu există evaluări
  • CR-191 MIPI Axenti Alina Lab4
    CR-191 MIPI Axenti Alina Lab4
    Document6 pagini
    CR-191 MIPI Axenti Alina Lab4
    Alina Axenti
    Încă nu există evaluări
  • Somipp Linux 3 UTM
    Somipp Linux 3 UTM
    Document7 pagini
    Somipp Linux 3 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document7 pagini
    Lab 3
    Fil Gorea
    Încă nu există evaluări
  • Electr Lab5
    Electr Lab5
    Document4 pagini
    Electr Lab5
    Nickolae Enachi
    Încă nu există evaluări
  • Prezentare Licenta
    Prezentare Licenta
    Document19 pagini
    Prezentare Licenta
    cristianul86
    Încă nu există evaluări
  • Refer at
    Refer at
    Document11 pagini
    Refer at
    Дарья Рг
    Încă nu există evaluări
  • Raport GC Lab 4
    Raport GC Lab 4
    Document2 pagini
    Raport GC Lab 4
    Nickolae Enachi
    Încă nu există evaluări
  • Lucrare de Laborator nr.1
    Lucrare de Laborator nr.1
    Document17 pagini
    Lucrare de Laborator nr.1
    Cristina Florea
    Încă nu există evaluări
  • TW Lab5
    TW Lab5
    Document3 pagini
    TW Lab5
    Dan
    Încă nu există evaluări
  • SA Filtre Netezire
    SA Filtre Netezire
    Document23 pagini
    SA Filtre Netezire
    Cristian Tilinschi
    Încă nu există evaluări
  • Raport C++ Lab 3
    Raport C++ Lab 3
    Document4 pagini
    Raport C++ Lab 3
    Nickolae Enachi
    Încă nu există evaluări
  • Laborar 4 Programare
    Laborar 4 Programare
    Document13 pagini
    Laborar 4 Programare
    cristian
    Încă nu există evaluări
  • Raport Cucu Eugen Lab.7 C++
    Raport Cucu Eugen Lab.7 C++
    Document10 pagini
    Raport Cucu Eugen Lab.7 C++
    Cucu Eugen
    Încă nu există evaluări
  • Lab 03 RC
    Lab 03 RC
    Document14 pagini
    Lab 03 RC
    tarakan
    Încă nu există evaluări
  • Lab2 LFPC AutomateFinite
    Lab2 LFPC AutomateFinite
    Document11 pagini
    Lab2 LFPC AutomateFinite
    tarakan
    100% (1)
  • Raport Cucu Eugen Lab.6
    Raport Cucu Eugen Lab.6
    Document9 pagini
    Raport Cucu Eugen Lab.6
    Cucu Eugen
    Încă nu există evaluări
  • Laborator nr6 CDE
    Laborator nr6 CDE
    Document5 pagini
    Laborator nr6 CDE
    Vlad Racu
    Încă nu există evaluări
  • ASAD Lab03 Raport
    ASAD Lab03 Raport
    Document6 pagini
    ASAD Lab03 Raport
    Mihai U
    Încă nu există evaluări
  • Lab7 POO
    Lab7 POO
    Document10 pagini
    Lab7 POO
    Grosu Elena
    Î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
  • C++2012 Lab6
    C++2012 Lab6
    Document10 pagini
    C++2012 Lab6
    Elena Bujor
    Încă nu există evaluări
  • Laborator-3 Programarea Calculatoarelor
    Laborator-3 Programarea Calculatoarelor
    Document7 pagini
    Laborator-3 Programarea Calculatoarelor
    Radu Arapan
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document9 pagini
    Lab 1
    Cristian Conea
    Î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
  • Lab 2 Apa
    Lab 2 Apa
    Document12 pagini
    Lab 2 Apa
    Artur Kingsman
    Încă nu există evaluări
  • Lista Subiecte Examen
    Lista Subiecte Examen
    Document1 pagină
    Lista Subiecte Examen
    Ion Popescu
    Încă nu există evaluări
  • LL4 BD
    LL4 BD
    Document6 pagini
    LL4 BD
    Anya Mr
    Încă nu există evaluări
  • Lab1 GC
    Lab1 GC
    Document8 pagini
    Lab1 GC
    Andrei Barbalat
    Încă nu există evaluări
  • Proiect de An RC
    Proiect de An RC
    Document15 pagini
    Proiect de An RC
    Клара Кожухари
    Încă nu există evaluări
  • Raspunsuri AC
    Raspunsuri AC
    Document10 pagini
    Raspunsuri AC
    Anastasia Gherman
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document9 pagini
    Lab 1
    Fil Gorea
    Încă nu există evaluări
  • RC Examen
    RC Examen
    Document50 pagini
    RC Examen
    Belinschi Andrei
    Încă nu există evaluări
  • ASDN Lab 1print
    ASDN Lab 1print
    Document6 pagini
    ASDN Lab 1print
    Octavian Macovetchi
    Încă nu există evaluări
  • Raspunsuri EP II 01-28
    Raspunsuri EP II 01-28
    Document8 pagini
    Raspunsuri EP II 01-28
    Poloboc
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • POO Lab7
    POO Lab7
    Document6 pagini
    POO Lab7
    Dani Ela
    Încă nu există evaluări
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • POO1-varianta 3
    POO1-varianta 3
    Document5 pagini
    POO1-varianta 3
    Octavian Lucaș
    Încă nu există evaluări
  • Laborator nr.1 APA
    Laborator nr.1 APA
    Document5 pagini
    Laborator nr.1 APA
    Anastasia Gherman
    Încă nu există evaluări
  • Grafica Laborator Nr.3
    Grafica Laborator Nr.3
    Document5 pagini
    Grafica Laborator Nr.3
    Cebotari Ion
    100% (2)
  • Raspunsuri AC
    Raspunsuri AC
    Document10 pagini
    Raspunsuri AC
    Anastasia
    Încă nu există evaluări
  • Laborator Porgramarea Calculatoarelor 3
    Laborator Porgramarea Calculatoarelor 3
    Document3 pagini
    Laborator Porgramarea Calculatoarelor 3
    Sergiu Lungu
    Încă nu există evaluări
  • Laboratorul Cercetari
    Laboratorul Cercetari
    Document5 pagini
    Laboratorul Cercetari
    Buinovschi Corneliu
    Încă nu există evaluări
  • Laborator 2 Sav
    Laborator 2 Sav
    Document7 pagini
    Laborator 2 Sav
    Viorel Sorocean
    Încă nu există evaluări
  • Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Document4 pagini
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Ion Damaschin
    Încă nu există evaluări
  • Raport Final
    Raport Final
    Document26 pagini
    Raport Final
    Cristi Adașan
    Încă nu există evaluări
  • Bonta Alexandr SAV Lab2
    Bonta Alexandr SAV Lab2
    Document5 pagini
    Bonta Alexandr SAV Lab2
    X3 KTO
    Încă nu există evaluări
  • APPOO Teme Evaluare
    APPOO Teme Evaluare
    Document15 pagini
    APPOO Teme Evaluare
    Adrian Solomon
    100% (1)
  • Lab1 Somipp
    Lab1 Somipp
    Document14 pagini
    Lab1 Somipp
    Jen4ik
    100% (1)
  • Lab 5
    Lab 5
    Document7 pagini
    Lab 5
    Dorin Nicoara
    Încă nu există evaluări
  • Lab 4 RC
    Lab 4 RC
    Document4 pagini
    Lab 4 RC
    Den's Vlogs
    Încă nu există evaluări
  • Laborator Metode Numerice
    Laborator Metode Numerice
    Document4 pagini
    Laborator Metode Numerice
    Florin Gheorghe
    Încă nu există evaluări
  • Moştenirea Multiplă.
    Moştenirea Multiplă.
    Document4 pagini
    Moştenirea Multiplă.
    romamd555s
    Î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 FC
    Lab.4 FC
    Document6 pagini
    Lab.4 FC
    Cristina Florea
    Încă nu există evaluări
  • Lab 1 PMMA
    Lab 1 PMMA
    Document3 pagini
    Lab 1 PMMA
    BatiriMichael
    Încă nu există evaluări
  • TW Lab 6
    TW Lab 6
    Document6 pagini
    TW Lab 6
    DanuIepuras
    Încă nu există evaluări
  • Proiect Limbaj C de Programare
    Proiect Limbaj C de Programare
    Document16 pagini
    Proiect Limbaj C de Programare
    Gabriel Buzatu
    Încă nu există evaluări
  • Lab3 DPP
    Lab3 DPP
    Document12 pagini
    Lab3 DPP
    Fil Gorea
    Încă nu există evaluări
  • Curs POO 02
    Curs POO 02
    Document14 pagini
    Curs POO 02
    Marinela Fertu Ozarchevici
    Încă nu există evaluări
  • An1 Lab12 Sem2 20-21
    An1 Lab12 Sem2 20-21
    Document8 pagini
    An1 Lab12 Sem2 20-21
    Ioana
    Încă nu există evaluări
  • PSM Laborator Nr5
    PSM Laborator Nr5
    Document2 pagini
    PSM Laborator Nr5
    grupac131
    Încă nu există evaluări
  • PSM Laborator Nr2 - 3
    PSM Laborator Nr2 - 3
    Document13 pagini
    PSM Laborator Nr2 - 3
    Nickolae Enachi
    Încă nu există evaluări
  • PSM Laborator Nr2 - 3
    PSM Laborator Nr2 - 3
    Document2 pagini
    PSM Laborator Nr2 - 3
    Mishanea Popereshniuk
    Încă nu există evaluări
  • Mitologia Chineză
    Mitologia Chineză
    Document3 pagini
    Mitologia Chineză
    Nickolae Enachi
    Încă nu există evaluări
  • PSM Laborator Nr1
    PSM Laborator Nr1
    Document2 pagini
    PSM Laborator Nr1
    Nickolae Enachi
    Încă nu există evaluări
  • Raport GC Lab 1
    Raport GC Lab 1
    Document6 pagini
    Raport GC Lab 1
    Nickolae Enachi
    Încă nu există evaluări
  • Raport C++ Lab 2
    Raport C++ Lab 2
    Document5 pagini
    Raport C++ Lab 2
    Nickolae Enachi
    Încă nu există evaluări
  • Raport C++ Lab 6
    Raport C++ Lab 6
    Document4 pagini
    Raport C++ Lab 6
    Nickolae Enachi
    Încă nu există evaluări
  • Raport C++ Lab 2
    Raport C++ Lab 2
    Document5 pagini
    Raport C++ Lab 2
    Nickolae Enachi
    Încă nu există evaluări
  • ASDN Lab1
    ASDN Lab1
    Document7 pagini
    ASDN Lab1
    Nickolae Enachi
    Încă nu există evaluări
  • Fizica Lab 241
    Fizica Lab 241
    Document4 pagini
    Fizica Lab 241
    GheorgheGritcan
    Încă nu există evaluări
  • Mat Lab 3
    Mat Lab 3
    Document9 pagini
    Mat Lab 3
    Nickolae Enachi
    Încă nu există evaluări