Sunteți pe pagina 1din 5

Curs 2- Clase si Obiecte

1. Cand actioneaza constructorul unei clase ?

Constructorul este apelat in momentul declararii obiectelor.

2. Cand actioneaza destructorul unei clase ?

Destructorul este apelat automat la iesirea din blocul in care este recunoscut acel obiect.

3. Cand este absolut necesara definirea unui constructor de copiere ?

In situatiile in care un tip de date are ca membri pointeri, este necesara implementarea unui
constructor pentru initializare si a unui constructor de copiere.

4. Cand se justifica utilizarea functiilor inline ?

Utilizarea functiilor inline se justifica doar in situatiile in care codul general de compilator pentru
executia corpului functiei este mai mic decat codul generat pentru apel si revenire.

5. Caracteristicile destructorului unei clase.


- are acelasi nume ca si clasa a caror metoda este.
- numele este precedat de ~.
- o clasa are un singur destructor.
- nu are parametri si nu returneaza nicio valoare.
- daca nu s-a definit un destructor, compilatorul genereaza automat un destructor pentru
clasa respectiva.
- se apeleaza la incheierea timpului de viata a obiectelor, in ordine inversa constructorilor.
- obiectele dinamice nu se distrug automat.

6. Care este utilitatea mostenirii ?

Mecanismul mostenirii permite crearea unei ierarhii de clase si trecerea de la clasele generale la
cele particulare. Procesul implica la inceput definirea clasei de baza care stabileste calitatile
commune ale tuturor obiectelor ce vor deriva din baza. Prin mostenire, un obiect poate prelua
proprietatile obiectelor din clasa de baza.

7. Care sunt deosebirile intre o functie membra a unei clase si o functie prietena a unei clase ?

Prototipurile functiilor prietene sunt precedate de cuvantul cheie friend. Spre deosebire de
functiile membre, functiile prietene ale unei clase nu poseda pointerul implicit this. De aceea,
deosebirea esentiala consta in faptul ca functia prietena are un parametru in plus fata de functia
membru.

8. Ce fel de metode pot actiona asupra datelor membre statice ale unei clase ?

Data membra static figureaza intr-un singur exemplar. Ea poate fi modificata prin metode
statice. Apelul unei metode statice poate fi realizat ca un apel al unei metode obisnuite sau
folosind operatorul de rezolutie :: . Daca metoda static nu este asociata unui obiect anume, in
corpul functiilor statice nu pot fi accesate decat datele membre statice.

9. Ce functii au acces la membrii privati ai unei clase ?

Functiile prietene

10. Ce operator permite referirea unui membru al structurii ?

Operatorul de selectie notat cu punct.

11. Ce observatie aveti in legatura cu metodele definite in interiorul clasei si functiile inline ?

In cazul metodelor unei clase, daca acestea sunt definite in interiorul clasei, ele sunt considerate
implicit functii inline.

12. O clasa poate fi prietena a altei clase ?

In cazul in care se doreste ca toate functiile membre ale unei clase sa aiba acces la membrii
privati ai altei clase, prima clasa poate fi declarata clasa prietena pentru cea de-a doua clasa.

13. Ce sunt destructorii?

Destructorii sunt metode ale claselor care actioneaza in sens invers, complementar fata de
constructori. Destructorii elibereaza memoria alocata de constructori, sunt apelati automat la
iesirea din blocul in care este recunoscut acel obiect.

14. Ce sunt functiile inline ?

Functiile inline anunta compilatorul sa nu mai genereze instructiunile in cod masina necesare
apelului si revenirii, ceea ce conduce la marirea timpului de compilare in favoarea micsorarii
timpului de executie.

15. Constructorii unei clase pot primi ca parametri instante ale clasei respective ? Daca da, in ce
conditii ?
Constructorii unei clase nu pot primi ca parametri instante ale clasei respective, ci doar pointeri
sau referinte la instantele clasei respective.

16. Cine impune comportamentul unui obiect ?

Comportamentul unui obiect este determinat de actiunile pe care obiectul poate sa le


execute(metode).

17. Cum se aloca memoria pentru datele membre nestatice in momentul delcararii mai multor
obiecte din aceeasi clasa ?

Datele membre nestatice se aloca distinct pentru fiecare instanta (atribute ale instantei) a clasei.

18. Deosebiri intre structuri si clase.

Structurile reprezinta cazuri particulare ale claselor, putand avea nu numai date membre sau
campuri de date, ci si functii membre. La structuri, membrii sunt implicit publici, iar la clase
implicit privati. Lipsa unor modalitati de protective a datelor face ca tipurile de date introduse
prin structuri sa nu poata fi strict controlate in ceea ce priveste operatiile executate asupra lor.
In cazul claselor, modul de acces la membrii tipului de date poate fi schimbat prin utilizarea
modificatorilor de control ai accesului: public, private, protected.

19. Enumerati facilitatile oferite de programarea orientate pe obiect.

abstractizarea datelor, mostenirea, incapsularea informatiei, legarea dinamica.

20. Explicati conceptul de incapsulare a datelor.

Incapsularea informatiei reflecta faptul ca atributele instanta si metodele unui obiect il definesc
doar pe acesta. Metodele si atributele unui obiect sunt incapsulate in obiect. Obiectul detine
controlul asupra atributelor instanta, care nu pot fi alterate de alte obiecte. Singura exceptie o
reprezinta atributele de clasa care nu pot fi incapsulate, fiind partajate intre toate instantele
clasei. Aceasta tehnica de plasare a valorilor in datele membre private ale obiectului reprezinta
un mecanism de ascundere a datelor.

21. Prototipul constructorului de copiere.

<cls> (const <cls> &);


cls- numele clasei

22. Explicati in cateva cuvinte ce este mostenirea multipla.


In cazul mostenirii multiple, o clasa are mai multe superclase. Rezulta o structura de retea. Ideea
mostenirii multiple poate duce la utilizarea unor clase pentru care nu exista instante, care sa
ajute doar la organizarea retelei de mostenire.

23. Explicati in cateva cuvinte ce este mostenirea.

Mostenirea permite refolosirea codului si extinderea functionalitatii claselor existente. Permite


crearea unei ierarhii de clase si trecerea de la clasele generale la cele particulare. Implica la
inceput definirea clasei de baza care stabileste calitatile commune tuturor obiectelor ce vor
deriva din baza. Prin mostenire, un obiect poate prelua proprietatile obiectelor din clasa de
baza.

24. Niveluri de acces la membrii si metodele unei clase.

Nivelul de acces la membrii unei clase poate fi private(pot fi accesati doar prin metodele clasei,
nivel implicit), protected( prin functiile membre ale clasei derivate), public(din orice punct al
domeniului de existent a clasei), friend(prin functiile membre ale functiei prietene specificate).

25. Cum se declara functiile prietene ?

class cls1{
//
int f1(int, char);
//
};
class cls2{
//
friend int cls1::f1(int, char);
//
};

26. Prin ce se caracterizeaza datele membre statice ?

Datele membre statice exista intr-un singur exemplar, comun pentru toate instantele clasei.
Pentru data membra static se rezerva o zona de memorie continua obiectelor.
Data membra static nu apartine unui anume obiect, ea apare prefixata de numele clasei si
operatorul de apartenenta.

27. Prin ce se realizeaza comunicarea intre obiectele unei clase ?


Obiectele comunica intre ele prin mesaje. Un obiect poate stimuli un altul sa activeze o metoda
trimitand un mesaj. Dupa primirea mesajului, metoda respectiva este apelata cu parametrii
furnizati, asigurand comportarea corespunzatoare a obiectelor. Metodele sunt invocate prin
trimiterea de mesaje.

28. O clasa poate avea mai multi destructori ? Daca da, in ce conditii ?

O clasa are un singur destructor.

29. Operatorul :: si rolul sau. Ce sunt functiile prietene ?

Operatorul :: (scope resolution operator) specifica relatia de apartenenta a metodei la un tip.


Operatorul cupleaza <nume_clasa>::<nume_functie_membru> si defineste domeniul(scopul) in
care acea functie va fi recunoscuta. Prezenta numelui clasei in fata functiei membru este
obligatorie deoarece altfel nu s-ar putea face distinctia intre metode cu nume identice care
apartin unor clase diferite.
Functiile prietene sunt functii care au acces la datele membre private ale clasei. Ele trebuie
precizate in definitia clasei.

30. Ce este o metoda ?

La definirea unei clase, se definesc si metodele acesteia. Fiecare obiect are acces la un set de
functii care descriu operatiile care pot fi executate asupra lui. Metodele pot fi folosite de
instantele clasei respective, dar si de instantele altor clase prin mecanismul mostenirii.

31. Nici functiile prietene, nici metodele statice ale unei clase nu primesc ca argument implicit
pointerul this. Explicati care sunt, totusi, diferentele dintre ele.

Metodele statice pot fi apelate independent de un obiect al clasei, folosind operatorul de


rezolutie :: . In corpul functiilor statice nu pot fi accesate decat datele membre statice.
Functiile prietene pot accesa si ceilalti membri, nu doar pe cei statici.

32. Ce sunt clasele ?

Tipuri abstracte de date care incapsuleaza atat elemente de date pentru care s-a adoptat un
anumit mod de reprezentare, cat si operatiile asupra datelor.

33. Ce sunt constructorii impliciti ?

In cazul in care o clasa nu are niciun constructor declarat de programator, compilatorul


genereaza un constructor implicit, fara niciun parametru, cu lista instructiunilor vida.

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