Sunteți pe pagina 1din 6

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică şi Microelectronică

RAPORT

Lucrarea de laborator Nr.2


La Programare Orientata pe Obiect

A elaborat: Iordan Marin IBM-191

A verificat: M. Osovschi

Chișinau 2020
Tema: Clase (constructori, destructori).Funcţii şi clase prietene.

Scopul lucrării: familiarizarea studenţilor cu noţiunea de clase, utilizarea constructorilor,


destructorilor, cu noțiunile de funcţii şi clase prietene.

Sarcina lucrarii: V8
Să se scrie un program pentru implimentarea unei clase care include un set de date specifice cît
și următoarele metode:

- Constructor prestabilit,
- Constructor de copiere,
- Constructor cu parametri,
- Metodă de inițializare a datelor,
- Metodă de afișare a datelor,
- Metode de returnare și afișare separată a datelor(opțional).

Clasa va conține metode descrise atît în interior cît și în exteriorul ei. Cel puțin o metod va fi
declarată ca funcție prietenă. După posibilități să se utilizeze pointerul this și operatorul
rezoluție( ::).

Listing-ul programului:

#include <iostream>
#include <cstring>

using namespace std;

class Medic
{
private:
string specialitate;
int staj;
int salariu;

public:
Medic(); // constructor prestabilit
Medic(Medic &obj); // constructor de copiere
Medic(string specialitate, int staj, int salariu); // constructor cu
parametri

// Getters
string GetSpecialitate() { return specialitate; }
int GetStaj() { return staj; }
int GetSalariu() { return salariu; }

// Setters
void SetSpecialitate (string specialitate);
void SetStaj(int staj);
void SetSalariu(int salariu);

// Methods
void Init();
friend void Afisare(Medic &medic);

};

/**
* CONSTRUCTORS
*/
Medic::Medic()
{
cout << "Constructor prestabilit..." << endl;
}

Medic::Medic (Medic &obj)


{
cout << "Constructor de copiere..." << endl;
specialitate= obj.specialitate;
staj= obj.staj;
salariu= obj.salariu;
}

Medic::Medic (string spec, int st, int sal)


{
cout << "Constructor cu parametri..." << endl;
this->specialitate = spec;
this->staj = st;
this->salariu = sal;
}

/**
* SETTERS
*/
void Medic::SetSpecialitate(string specialitate)
{
this->specialitate = specialitate;
}

void Medic::SetStaj(int staj)


{
this->staj =staj;
}

Void Medic:: SetSalariu (int salariu)


{
this->salariu =salariu;
}

/**
* METHODS
*/
void Medic::Init()
{
specialitate= "Chirurg";
staj= 10;
salariu= 40000;
}

void Afisare(Medic &medic)


{
cout << "Specialitate: " << medic.specialitate << " | Staj: " <<
medic.staj << " | Salariu: $" << medic.salariu << endl;
}

// MAIN()
int main()
{
// Scenariu 1:

Medic medic;
medic.Init();
Afisare(medic);

return 0;
}

Rezultatul programului:

int main()
{
// Scenariu 2:

Medic medic("Stomatolog", 12, 10000);

Medic medic2(medic);
Afisare(medic2);

return 0;
}Rezultatul programului:
int main()
{
// Scenariu 3:

Film film;
film.SetDenumire(“St setat”);
film.SetAn(1998);
film.SetCost(300000);

Film film2(film);
film2.GetDenumire();
film2.GetAn();
film2.GetCost();

return 0;
}

Medic medic;
medic.SetSpecialitate("St Ginecolog");
medic.SetStaj(7);
medic.SetSalariu(8000);

Medic medic2(medic);
medic2.GetSpecialitate();
medic2.GetStaj();
medic2.GetSalariu();

return 0;
}
Rezultatul programului:

Concluzie

În urma executării acestei lucrări de laborator am însuşit utilizarea claselor în C++, la fel
utilizarea constructorilor prestabilit, cu parametri şi respectiv cel de copiere. În interiorul clasei
au fost declarate variabilele ca fiind private şi accesul lor se execută prin intermediul la Getters
şi Setters. Metodele de setare(Setters) setează valoare pentru variabilă, dar Getters returnează
valoarea. Aceste se efectuează pentru securitatea programului şi se numeşte Incapsulare.
La fel am folosit o metodă prietenă pentru afişarea datelor unui obiect.

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