+ All Categories
Transcript
Page 1: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

Programare orientată peobiecte

# 5

Adrian Runceanuwww.runceanu.ro/adrian

2016

C++Funcții constructor și destructor

Page 2: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Functii constructor si destructor

1. Funcţiile constructor sunt metode ale claselor ceînlesnesc iniţializarea membrilor de date ai claselor

2. Funcţiile constructor au acelaşi nume cu clasarespectivă, numele funcţieie constructor nu se precde, însă, cu cuvântul cheie void.

3. Funcţiile constructor nu întorc nici o valoare

09.11.2016 P.O.O. - limbajul C++ (laborator) 2

Page 3: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Functii constructor si destructor

4. De fiecare dată când un program creează o variabilă de tipul uni clase, C++ apelează funcţia constructor, în cazul încare aceasta există

5. Rularea unui program implică alocarea de memorie înscopul stocării de informaţii ale diferitelor obiecte. La distrugerea unui obiect, C++ apelează o funcţie specialădestructor care poate elibera această memorie.

09.11.2016 P.O.O. - limbajul C++ (laborator) 3

Page 4: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Functii constructor si destructor

6. Funcţiile destructor au acelaţi nume cu clasa respectivă, dar acest nume trebuie precedat de caracterul (~).

7. Funcţiile destructor nu întorc nici o valoare. Asemenifuncţiilor constructor, numele unei funcţii destructor nu sunt precedate de cuvântul cheie void.

09.11.2016 P.O.O. - limbajul C++ (laborator) 4

Page 5: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Problema nr.2

Să se realizeze un program ce foloseşte o clasă Film cu următorii membrii:

Nume (titlu film)

actor principal

actor secundar

Se cere afişarea membrilor. Se vor utiliza funcţii constructor şi destructor.

09.11.2016 P.O.O. - limbajul C++ (laborator) 5

Page 6: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Solutie:

#include<iostream.h>#include<stdio.h>using namespaces std;

class film {private:

char nume[35];char actp[35];char acts[35];

09.11.2016 P.O.O. - limbajul C++ (laborator) 6

Page 7: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

public:film(){cout<<"\n S-a apelat constructorul clasei film";cout<<"\n Introduceti numele filmului: "; gets(nume);cout<<" Actorul principal: "; gets(actp);cout<<" Actorul secundar: "; gets(acts);}

09.11.2016 P.O.O. - limbajul C++ (laborator) 7

Page 8: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

~film()

{

cout<<"\n Se trece prin destructorul clasei

film";

}

09.11.2016 P.O.O. - limbajul C++ (laborator) 8

Page 9: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

void afisare_film()

{

cout<<"\n Nume film: "<<nume;

cout<<"\n Actor principal: "<<actp;

cout<<"\n Actor secundar: "<<acts<<endl;

}

};

09.11.2016 P.O.O. - limbajul C++ (laborator) 9

Page 10: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

int main()

{

film f1, f2;

f1.afisare_film();

f2.afisare_film();

}

09.11.2016 P.O.O. - limbajul C++ (laborator) 10

Page 11: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Executia programului este:

09.11.2016 P.O.O. - limbajul C++ (laborator) 11

Page 12: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Probleme propuse spre rezolvare

3. Să se realizeze un program care utilizează o clasă Grupa ce conţine ca date numele, prenumele, vârsta, notele la 5 examene şi media acestora pentru 10 studenţi. Clasa va avea o funcţie constructor pentru iniţializarea numelui şi prenumelui iar notele se vor citi de la tastatură. Media notelor va fi de tip privat.

09.11.2016 P.O.O. - limbajul C++ (laborator) 12

Page 13: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Lucrarea de laborator nr.5

Probleme propuse spre rezolvare

4. Să se realizeze un program care conţine două clase: 1. o clasă ce va conţine un tip de maşină, culoarea

acesteia şi preţul 2. şi o clasă care conţine numele, prenumele şi vârsta

unui şofer. Obiectele celei de-a doua clase vor apela obiectele primei clase pentru a specifica maşina fiecărui şofer. Se vor utiliza funcţii constructor şi destructor.

09.11.2016 P.O.O. - limbajul C++ (laborator) 13

Page 14: Programare orientatăpe obiecte 5 C++ Func ii constructor i ... · Lucrarea de laborator nr.5 Functii constructor si destructor 4. De fiecare datăcândun program creeaz ăo variabilăde

[email protected]

Întrebări?

09.11.2016 P.O.O. - limbajul C++ (laborator) 14


Top Related