Sunteți pe pagina 1din 6

Colegiul National NICU GANE Falticeni

Nechita Dumitru Clasa a XI-a B

Colegiul National NICU GANE Falticeni

Programarea orientat pe obiecte (POO, uneori i Programarea orientat obiect) este o paradigm de programare.

Proprieti ale programrii orientate obiect


1. Incapsularea Accesul la variabilele unui obiect se face doar prin apelarea metodelor sale, orice alt obiect netiind nici mcar de existena variabilelor obiectului n cauz.

2. Motenirea Unul dintre marile avantaje ale programrii orientate obiect este posibilitatea de a reutiliza codul existent. Posibilitatea proiectrii de noi clase folosind clase deja construite se numete motenire. Dac o clas A motenete o clas B, atunci variabilele i metodele clasei B vor fi considerate ca aparinnd i clasei A. Motenirea permite crearea unor clase de baz cu rolul de a stoca caracteristici comune unor clase diferite, astfel aceste proprieti nu vor trebui precizate n fiecare clas n parte.
Exemplu: Clasele triunghi, patrulater i cerc au structuri diferite, dar toate au o arie, un numr de laturi, perimetru, etc. Pentru ca n cele trei clase s nu se repete aceleai elemente, variabile i metode, soluia optim este proiectarea unei clase figur geometric, n care s se regseasc caracteristicile comune, i aceasta s fie motenit de toate cele trei clase n cauz.

Urmtoarea diagram ilustreaz motenirea:


************************** * * * RAFT <|-+ * * | ************************** | | | ************************** | * * | * RAFT FRIGORIFIC ---+ * * ************************** Clasa Raft Frigorific motenete clasa Raft

Nechita Dumitru Clasa a XI-a B

Colegiul National NICU GANE Falticeni 3. Polimorfismul


Abilitatea unei metode cu un anumit nume s aib comportri diferite, n funcie de paramerii de intrare se numete polimorfism. Nu trebuie s se confunde aceast proprietate cu cea de motenire, cu ajutorul creia se pot redefini metodele motenite de la o alt clas. Polimorfismul se refer la metode cu acelai nume i cu parametri de intrare i/sau ieire diferii. n ceea ce privete motenirea este vorba de metode redefinite, dar care i pstreaz aceeai signatur (acelai nume i parametri de intrare/ieire). Polimorfismul are un rol foarte important n reutilizarea codului. S presupunem c avem o clas operaii aritmetice cu o metod care s primeasc dou numere oarecare (reale sau complexe). Dac polimorfismul nu ar fi luat n calcul, atunci ar trebui implementate metode, fiecare cu o denumire diferit, pentru toate cele patru cazuri: (numr real + numr real, numr real + numr complex, numr complex + numr real, numr complex + numr complex) i utilizatorul clasei ar trebui s in minte toate cele patru nume de metode pentru a face o adunare. Cu ajutorul polimorfismului, cele patru metode distincte pot avea acelai nume i programatorul care utilizeaz clasa operaii aritmetice nu trebuie s rein dect o singur denumire, compilatorul alegnd varianta corect n funcie de parametrii de intrare furnizai. Pe scurt, prin polimorfism o metod poate executa aciuni diferite , n funcie de parametrii de intrare care i sunt furnizai. Se realizeaz o interfa de comunicare a obiectului cu exteriorul mult mai unitar i flexibil(metoda adunare are un singur nume i nu patru), proiectanii putnd s se concentreze mai bine asupra modului cum s foloseasc obiectele, fiind scutii de detalii de implementare.

n unele limbaje de programare care suport metoda orientat pe obiecte, cum ar fi C++, este permis chiar i suprancrcarea operatorilor standard predefinii. De exemplu operatorul + , destinat efecturii operaiei de adunare pentru numere reale poate fi fcut s execute i alte tipuri de adunri.

Clase i obiecte
Programarea orientat pe obiect (Programare Orientat Obiectual) este unul din cei mai importani pai fcui n evoluia limbajelor de programare spre o mai puternic abstractizare n implementarea programelor. Ea a aprut din necesitatea exprimrii problemei ntr-un mod mai natural fiinei umane. Astfel unitaile care alctuiesc un program se apropie mai mult de modul nostru de a gndi dect modul de lucru al calculatorului. Pn la apariia programrii orientate pe obiect programele erau implementate n limbaje de programare procedurale (C, Pascal) sau n limbaje care nici mcar nu ofereau o modalitate de grupare a instruciunilor n uniti logice (funcii, proceduri) cum este cazul limbajului de asamblare (assembler). Altfel spus o problem preluat din natur trebuia fragmentat n repetate rnduri astfel nct s se identifice elementele distincte, implementabile ntr-un limbaj de programare. O mare problem a programrii procedurale era separarea datelor de unitile care prelucrau datele(subrutinele), ceea ce fcea foarte dificil extinderea i ntreinerea unui program. Astfel s-a pus problema ca aceste dou entiti(date i subrutine) s fie grupate ntr-un anumit mod, astfel nct subrutinele s "tie" n permanen ce date prelucreaz i, mai mult dect att, ele s formeze un modul, adic o unitate care separ implementarea de interfa, ceea ce implic posibilitatea refolosirii codului. A aprut astfel conceptul de Nechita Dumitru Clasa a XI-a B

Colegiul National NICU GANE Falticeni clas. Clasa realizeaz, n spe, ceea ce am vzut mai nainte: grupeaz datele i unitile de prelucrare a acestora ntr-un modul, unindu-le astfel ntr-o entitate mult mai natural. Dei tehnica se numete "Programare Orientat Obiectual", conceptul de baz al ei este Clasa. Clasa, pe lng faptul c abstractizeaz foarte mult analiza/sinteza problemei, are proprietatea de generalitate, ea desemnnd o mulime de obiecte care mpart o serie de proprieti.

Clasele se comporta diferit n funcie de tipul lor


Fie clasa "A" i clasele "B", "C" i "D"; s presupunem ca "B", "C", "D" motenesc pe "A". n acest caz putem face afirmaia: "B, C i D sunt de tip A". Aceasta nseamn c B, C i D motenesc toate caracteristicile clasei A deci pot fi identificate cu o clas de tip A. Fcnd o analogie cu exemplul anterior, dac A -> "Fruct", B -> "mr", C -> "nuc", D -> "prun", afirmaia de mai sus ar suna n felul urmtor: "mrul, para i nuca sunt fructe", lucru care este n mod evident adevrat. Dar s considerm urmtoarea situaie: "Fruct" poate implementa o subrutin pe care o vom numi "mnnc-m!". Deoarece, prin motenire, clasele "Mr", "Par" i "Nuc" preiau toate atributele clasei "Fruct", deci i subrutina "mnnc-m!" nseamn c un mr se mnnc la fel ca o prun! Bineneles, dac ncercm s "mucm" cu poft dintr-o nuc... Asta nseamn ca "mnnc-m!" trebuie sa se particularizeze pentru fiecare clas n parte, reflectnd un comportament adecvat cu proprietile acesteia. Acest lucru mai este numit i polimorfism. El este al treilea i cel mai important principiu al Programrii Orientate Obiectual. El asigur faptul c fiecare clas se comport diferit (polimorfic) la un anumit mesaj trimis ctre obiect (n cazul nostru, apelul subrutinei "mnnc-m!"). Se observ c polimorfismul exist n strns legtur cu motenirea, fr de care nu ar exista. El aduce ns o nuan motenirii: " Preiau din clasa de baz doar acele proprieti care sunt comune i reflect un comportament adecvat structurii mele". Altfel spus, prin polimorfism pot face o motenire selectiv

Avantajele utilizrii programrii orientat pe obiecte


* uurina proiectrii i reutilizrii codului: Odat ce este testat corectitudinea funcionrii unor obiecte dintr-o aplicaie, acestea vor putea fi folosite fr nici o problem i n alt aplicaie. Acest avantaj poate fi valorificat prin constituirea de biblioteci de obiecte. n ceea ce privete proiectarea, se faciliteaz descompunerea problemelor complexe n subprobleme simple, care pot fi uor modelate cu ajutorul obiectelor (variabilele vor descrie proprietile obiectelor modelate i metodele aciunile lor).

Nechita Dumitru Clasa a XI-a B

Colegiul National NICU GANE Falticeni


* abstractizare: Proiectanii pot obine o imagine de ansamblu, urmrind comportarea obiectelor i interaciunile dintre ele, detaliile fiind ngropate n compoziia obiectelor. * sigurana datelor: Abilitatea obiectelor de a se comporta ca nite cutii negre, de a putea fi folosite fr a se cunoate compoziia lor, asigur confidenialitatea datelor utilizate i micoreaz frecvena apariiilor i efectul erorilor legate de manipularea greit a tipurilor de date.

Exemplu:

clasa numr complex #include<stdio.h> #include<math.h> class Complex { float r,i; public: void Afiseaza(); float GetR(); float GetI(); void SetR(float r); void SetI(float i); void aduna(Complex x); }; float Complex::GetR() { return r; } float Complex::GetI() { return i; } void Complex::SetR(float r) { this->r = r; } void Complex::SetI(float i) { this->I = i; } void Complex::Afiseaza() { printf("%5.2f%ci*%5.2f", r, i>=0 ? '+' : '-', i>=0 ? i : -i ); } void Complex::aduna(Complex x) { r += x.GetR(); I += x.GetI(); }

Nechita Dumitru Clasa a XI-a B

Colegiul National NICU GANE Falticeni

Concluzii
Ideea POO (Programare Orientat Obiectual) este de a crea programele ca o colecie de obiecte, uniti individuale de cod care interacioneaz unele cu altele, n loc de simple liste de instruciuni sau de apeluri de proceduri. Obiectele POO sunt de obicei reprezentri ale obiectelor din viaa real (domeniul problemei), astfel nct programele realizate prin tehnica POO sunt mai uor de neles, de depanat i de extins dect programele procedurale. Aceasta este adevrat mai ales n cazul proiectelor software complexe i de dimensiuni mari, care se gestioneaz fcnd apel la ingineria programrii.

Nechita Dumitru Clasa a XI-a B

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