Teorie POO

download Teorie POO

of 5

Transcript of Teorie POO

Teorie POO

1) Poo este o noua paradigm generala de programare,a preluat cele mai bune idei din programarea structurata si le-a combinat bcu concept noi,mai puternice motiv pt care este cea mai folosita in software.Cand programam in modul orientat pe obiecte impartim o problema in subgrupe de sectiuni inrudite care tin seama atat de codul cat si de datele corespunzatoare din fiecare grup,apoi organizam aceste subgrupe intr-o structura ierarhica dupa care le transformam in unitati de sine statatoare numite obiecte. 2) Incapsularea este un mecanism care leaga impreuna cod si date si le pastreaza pe ambele in siguranta fata de interventii din afara si de utilizari gresite.Incapsularea este cea care permite crearea unui obiect. 3) Polimorfismul este caracteristica ce permite unei interfete sa fie folosita cu o clasa generata de actiuni. Reprezinta abilitatea unei functii de a se comporta diferit in functie de context. 4) Mostenirea se refera la clase si tinteste reutilizarea si realizarea unor programe complexe. Este procesul prin care un obiect poate sa preia prototipul altui obiect. 5) Clasa este un concept abstract care incapsuleaza date repr prin structuri specifice si operatii asupra lor repr prin functii specifice numite metode. Clasa va contine : -structuri de date -algoritmi 6) Specificatorii de acces sunt cuvinte rezervate ce controleaza accesul altor clase asupra membrilor unei clase.Ei pot fi : public,private si protected.Membrii publici pot fi utilizati si in afara clasei, cei protejati si in clasele derivate,iar cei privati pot fi utilizati numai de clasa unde sunt definiti.Odata utilizat specificatorul de acces efectul sau dureaza pana cand :fie pana cand intalneste un alt specificator de acces,fie se ajunge la sf declaratiei pt clasa. 7) Constructorul de initializare : -este folosit pt crearea si initializarea obiectelor ; -este o functie care : -are numele clasei ; -nu returneaza nimik ;

-poate avea parametrii ; -are versiune implicita care este fara parametri ; -poate fi supraincarcat ; 8) Constructorul de copiere este o metoda a clasei care creeaza un obiect noud in cel existent . 9) Operatorul de atribuire nu este un constructor ; admite o versiune implicita. 10) Constructorul de copiere neaga un obiect nou dintr-un obiect existent,adica creare cu intializare prin copiere. 11) Destructorul este metoda care se apeleaza la distrugerea obiectului(eliberarea zonei de memorie).Obiectele sunt distruse la iesirea din programul care le foloseste(respectiv a functiei).Nu au parametrii,nu returneaza nimic.Nu poate fi supraincarcat. 12) Transferul obiectelor : - valoare consta in crearea unei variabile locale,care reprezinta parametrul formal,pe stiva in zona de memorie ocupata de functie prin copiere din parametrul actual (cel cu care a fost apelata functia); - prin referinta consta in crearea unei referinte temporare (locale),in zona de memorie ocupata de functie catre parametrul actual cu care a fost lansata functia in executie; - prin referinta constanta : o variabila constanta poate fi transmisa numai ca referinta constanta.O variabila neconstanta poate fi transmisa atat ca referinta constanta cat si ca referinta neconstanta. 13) Conversia de date A->B / B->A A- tip de date existent: -predefinit si definit ca o clasa; B-tip de date nou->clasa Conversia de la A la B se face prin definirea unui constructor B(A) sau B(const A&). Conversia de la B la A se face prin supraincarcarea operatorului cast al tipului A in class B(A)b ;

14) Polimorfismul de compilare Supraincarcarea de functii si operatori Supraincarcarea functiilor mod in care se realizeaza polimorfism. In c++ doua sau mai multe functii pot avea acelasi nume atata timp cat declaratiile lor sunt definite. In aceasta situatie rezulta functii supraincarcate. Functiile pot sa difere si prin tipul returnat,dar acest lucru nu este intotdeauna de ajuns pentru compilator in luarea deciziei de a alege metoda corespunzatoare. Supraincarcarea operatorilor Operatorii se supraincarca prin crearea functiilor operator. O functie operator defineste operatiile specifice pe care le va efectua operatorul supraincarcat. Functii operator friend =>nu este membru al clasei => nu are pointerul this =>i se transmit implicit operanzii. Functii independente Daca dorim sa folosim o functie friend pt a supraincarca op ++ sau transmitem operatorul ca param de referinta!!! Operatorii new si delete Void * operator new(size_t marime) { return pointer_la_memorie } Void operator delete(void * p) { } Tip * x; x=new tip; x:new tip[dim]->vectori delete x; delete[ ] x;->vectori.

Reguli de supraincarcare: a) nu se pot adauga alti operatori decat cei existenti in limbaj; b) nu se poate modifica nr de operanzi ai unui operator; c) nu se poate modifica sintaxa; d) nu se poate modifica ordinea de executie a operatorilor intr-o expresie ; e) exista operatori care nu se pot supraincarca(. , {) f) exista operatori care nu se pot supraincarca in afara oricarei clase(ca functii independente): = ; ( ) ; [ ] ; g) atunci cand operatorul este supraincarcat intr-o clasa obiectul implicit este intotdeauna primul operant. 15) Functii cu parametrii cu valori implicite Atunci cand este apelata o functie membru,i se paseaza automat un argument implicit, care este un pointer catre obiectul care a generat apelarea. Acest pointer este numit pointerul this. Pointerul this a) tipul unui pointer this este acelasi cu tipul clasei; b) daca functia membra e const=>tipul sau e const 16) Sabloane Functii sablon O functie sablon defineste un set general de operatii care vor fi aplicate unor tipuri de date.Utilizand acest mecanism,poate fi aplicata aceeasi procedura unui domeniu larg de date.Compilatorul genereaza automat codul corect pt tipul de date cu care se executa functia. Clasa generica = clasa definita printr-un sablon

Cand definim o clasa generica creem o clasa care defineste toti algoritmii folositi de ea, dar tipul de date care este manevrat efectiv va fi specificat ca parametru la crearea obiectelor acelei clase. a) sunt folosite cand contine caracteristici generale ; b) compilatorul va genera automat tipul corect al obiectului.