Documente Academic
Documente Profesional
Documente Cultură
Conceptele de baza
Programarea orientat obiect (POO) este o metod de proiectare i
implementare n care programele sunt reprezentate sub forma unor
colecii de obiecte care interacioneaz ntre ele. n practic trebuie s
se decid ce clase sunt necesare, trebuie proiectat cate un set complet
de operaii pentru acestea, trebuie explicitate prile comune ale lor
prin relaia de motenire (derivare, generalizare) i trebuie folosit
polimorfismul.
Concepte de baz n POO
Abstractizarea - capacitatea de a reprezenta concepte direct ntr-un
program i de a ascunde detaliile din spate (se ofer clase i obiecte).
ncapsulare - capacitatea de a oferi garanii c o abstractizare este
utilizat numai n conformitate cu specificaiile sale.
Modularitatea- Modalitate de a grupa abstractizri legate logic ntre
ele.
Polimorfism - capacitatea de a oferi aceeai interfa pentru obiecte
cu implementari diferite. Conduce la simplificarea codului folosind
abstraciuni.
Motenirea - posibilitatea de a construi noi abstractizri pornind de
la una deja existent. Este una dintre cele mai puternice moduri de
construcie de abstraciuni utile
Genericele- capacitatea de parametrizare a tipurilor i funciilor prin
tipuri i valori, fiind un instrument puternic pentru a scrie algoritmi
generali.
Constructori si distructori
Caracteristicile constructorilor
au acelai nume cu cel al clasei din care fac parte
nu returneaz nimic (nici macar tipul void)
o clas poate avea mai muli constructori
nu pot primi ca parametri instane ale clasei ce se definete, ci doar pointeri sau
referine la instanele clasei respective
constructorii nu sunt apelai explicit (in general)
constructorii nu se motenesc
constructori nu pot fi funcii virtuale
Tipuri de constructori
Constructori implicii
definit de utilizator constructor ce nu are niciun parametru
generat de compilator daca o clas nu are niciun constructor definit atunci
compilatorul genereazunul automat, far parametri al crui corp nuconine nicio
instruciune
constructor cu toi parametri implicii
Constructori cu parameteri
cu parametri ce nu iau valori implicite
cu parametri ce iau valori implicite (la apel, acetia pot sa lipseasc, caz n care ei au
valorile implicite specificate la declarare).
Constructori de copiere
Permit iniializarea obiectelor din altele deja existente
Sunt definii de utilizator i generai de compilator
Destructori
Destructorul este o funcie membr special a unei clase ce apeleaz n mod automat
distrugerea unui obiect. Este definit de utilizator si generat de compilator, avand rolul de
a elibera zonele alocate dinamic.
class IdNumeClasa { ...
~IdNumeClasa ();...};
IdNumeClasa::~IdNumeClasa (){
//instructiuni}
Caracteristici
Are acelai nume cu numele clasei si este precedat de ~
Nu are parametric
Nu returneaza nimic (nici macar void)
O clasa poate avea un singur destructor
Supraincarcarea operatorilor
Operatorii sunt notaii concise, infixate, pentru operaii
matematice uzuale. Limbajul C++, ca orice limbaj de
programare asigur un set de operatori pentru tipurile
primitive. n plus, fa de limbajul C, C++ ofer posibilitatea
asocierii operatorilor existeni cu tipurile definite de utilizator.
Astfel, prezint interes extinderea operatorilor:
n aritmetic complex
n algebra matricial
n lucrul cu iruri de caractere, etc
Un operator poate fi privit ca o funcie, n care termenii sunt
argumentele funciei:
n lipsa operatorului + expresia a+b s-ar calcula apelnd
funcia aduna(a,b)
Procedeul const n definirea unei funcii cu numele:
operator symbol
unde:
operator este cuvntul cheie dedicat
simbol este simbolul oricrui operator C++, mai puin
urmtoriii: ., *, ::, ?:, sizeof.
Reguli pentru suprancrcare:
Setul de operatori ai limbajul C++ nu poate fi extins prin
asocierea de semnificaii noi unor caractere, care nu sunt
operatori (de exemplu nu putem defini operatorul **).
Prin suprancrcarea unui operator nu i se poate modifica
aritatea (astfel operatorul ! este unar i poate fi
supraincarcat numai ca operator unar). De asemeni
asociativitatea i precedena operatorului se menin.
La suprancrcarea unui operator nu se pot specifica
argumente cu valori implicite.
Operatorii suprancrcai ntr-o clas sunt motenii n
clasele derivate (excepie face operatorul de atribuire=).