Sunteți pe pagina 1din 5

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT

Lucrarea de laborator Nr.2


La Programare Orientata pe Obiect

A elaborat:

A verificat: Lect. Univ. Plotnic Constantin

Chișinau 2017
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: ex. 7


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:

/**
* 7. Film
*/

#include <iostream>
#include <cstring>

using namespace std;

class Film
{
private:
string denumire;
int an_emitere;
int cost_filmare;

public:
Film(); // constructor prestabilit
Film(Film &obj); // constructor de copiere
Film(string den, int an, int cost); // constructor cu parametri

// Getters
string GetDenumire() { return denumire; }
int GetAn() { return an_emitere; }
int GetCost() { return cost_filmare; }
// Setters
void SetDenumire(string denumire);
void SetAn(int an_emitere);
void SetCost(int cost_filmare);

// Methods
void Init();
friend void Afisare(Film &film);

};

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

Film::Film(Film &obj)
{
cout << "Constructor de copiere..." << endl;
denumire = obj.denumire;
an_emitere = obj.an_emitere;
cost_filmare = obj.cost_filmare;
}

Film::Film(string den, int an, int cost)


{
cout << "Constructor cu parametri..." << endl;
this->denumire = den;
this->an_emitere = an;
this->cost_filmare = cost;
}

/**
* SETTERS
*/
void Film::SetDenumire(string denumire)
{
this->denumire = denumire;
}

void Film::SetAn(int an_emitere)


{
this->an_emitere = an_emitere;
}

void Film::SetCost(int cost_filmare)


{
this->cost_filmare = cost_filmare;
}

/**
* METHODS
*/
void Film::Init()
{
denumire = "Star Wars I: The Phantom Menace";
an_emitere = 1999;
cost_filmare = 5000000;
}

void Afisare(Film &film)


{
cout << "Denumire: " << film.denumire << " | Anul emiterii: " <<
film.an_emitere << " | Costul filmarii: $" << film.cost_filmare << endl;
}

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

Film film;
film.Init();
Afisare(film);

return 0;
}

Rezultatul programului:

int main()
{
// Scenariu 2:

Film film(“St param”, 2000, 2000000);

Film film2(film);
Afisare(film2);

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;
}

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.