You are on page 1of 19

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

UNITATEA DE NVARE 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ___________________________________________________________________________

Cuprins
Obiectivele unitii de nvare 2 2.1. Programarea orientat pe obiecte Necesitatea programrii orientate pe obiecte Conceptele de baz ale programrii orientate pe obiecte Structura unei program n programarea orientat pe obiecte ntrebri 2.2. Obiectul Definirea conceptului de obiect Caracteristicile unui obiect Exemple de obiecte ntrebri 2.3. Clasa Definirea conceptului de clas Membri unei clase Tipurile de clase ntrebri 2.4. ncapsularea Definirea conceptului de ncapsulare Calificatori pentru protecia membrilor unei clase ntrebri 2.5. Motenirea Definirea conceptului de motenire Construirea unei ierarhi de clase Programarea orientat pe obiecte Programarea dirijat de evenimente ntrebri 2.6. Polimorfismul Definirea conceptului de polimorfism Procedee de implementare a polimorfismului ntrebri

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

2.7. Proiectarea arborelui de motenire al claselor Definirea conceptului de polimorfism Procedee de implementare a polimorfismului ntrebri

Bibliografie Unitatea de nvare 1

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

OBIECTIVELE UNITII DE NVARE 2 nsuirea cunotinelor necesare realizrii de programe n tehnologia

programrii orientate pe obiecte. Cunoaterea i nsuirea conceptelor de baz ale programrii orientate pe obiecte: obiect, abstractizare, clas, ncapsulare, motenire, polimorfism i persisten. Proiectarea arborelui de motenire al claselor.

2.1. Programarea orientat pe obiecte Necesitatea programrii orientate pe obiecte

Programarea orientat pe obiecte (OOP Object Oriented Programming) este tehnica cea mai utilizat ncepnd cu nceputul anilor 90, cnd paradigmele sale principale au fost adoptate i dezvoltate i de cele mai utilizate limbaje ale perioadei respective: C++, Pascal, Basic, Ada, Java, etc. Conceptele de baz ale OOP au fost totui dezvoltate nc din anii 60, odat cu proiectarea limbajului Simula67. 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 unitile 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.

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Conceptele de baz ale programrii orientate pe obiecte

Conceptele de baz ale programrii orientate obiect sunt: obiectul; abstractizarea: Este posibilitatea ca un program s ignore unele aspecte ale informaiei pe care o manipuleaz, adic posibilitatea de a se concentra asupra esenialului. Este procesul prin care se identific i se rein numai caracteristicile eseniale ale realitii modelate. Cel mai des, abstractizarea este ntlnit atunci cnd obiectele cu aceleai atribute i acelai comportament sunt grupate n tipuri abstracte numite clase. Clasele sunt reprezentri (modele) abstracte, conceptuale ale unor entiti; clasa; ncapsularea (ascunderea de informaii); motenirea; polimorfismul: Este abilitatea de a procesa obiectele n mod diferit, n funcie de tipul sau de clasa lor. Mai exact, este abilitatea de a redefini metode pentru clasele derivate. persistena: descrie durata de via a unui obiect n raport cu aplicaia ce l-a creat. Structura unei program n programarea orientat pe obiecte

Un program este format dintr-un ansamblu de obiecte ce comunic ntre ele, prin intermediul mesajelor. ntrebri 1. Prezentai cteva dintre avantajele programrii orientate pe obiecte. 2. Care sunt conceptele de baz ale programrii orientate pe obiecte? 3. Ce se nelege prin abstractizare? 4. Ce se nelege prin persisten? 5. Care este structura unui program n programarea orientat pe obiecte? 2.2. Obiectul Definirea conceptului de obiect

Obiectul este o entitate cu identitate proprie, caracterizat prin stare i comportament. Obiectul modeleaz o entitate din lumea real sau imaginar, definit de un set propriu i unic de proprieti. Obiectele reprezint tot ceea ce ne nconjoar: lucruri, fiine, procese,
Copyright Catedra Informatic de Gestiune, 2010
4

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

fenomene, etc. Obiectele comunic ntre ele prin intermediul mesajelor: obiectul care transmite mesajul este emitor, iar obiectul care recepioneaz mesajul este receptor. Trim ntr-o lume de obiecte i evenimente 1. Dimineaa apsai soneria ceasului detepttor, deschidei frigiderul i destupai o sticl de suc de portocale. Ceva mai trziu, deschidei portiera mainii, nvrtii cheia n contact, pornii motorul i apoi apsai pedala de acceleraie. Rareori v ntrebai cum funcioneaz ceasul detepttor, cum rcete frigiderul alimentele sau cum se transform n mod miraculos benzina n cai putere. Nimic nu vi se pare mai natural sau mai transparent dect relaia dintre obiecte i evenimentele pe care le generai atunci cnd interacionai cu ele. Un program scris pentru a fi rulat sub o Interfa Grafic Utilizator (Graphical User Interface - GUI), cum este mediul Microsoft Windows trebuie s fie la fel de firesc i de natural n utilizare. Caracteristicile unui obiect

Caracteristicile (proprietile) fundamentale ale obiectului sunt: identitatea: este dat de un cod unic care asigur diferenierea unui obiect fa de altul i implementat software sub forma unui identificator (ID) de tip read-only (o adres logic invariant de memorie - pointer), de regul transparent utilizatorului; starea: este reprezentat de structura obiectului i valorile curente ale elementelor acestei structuri (de exemplu: valorile proprietilor sau atributelor unui obiect). Starea obiectelor arat ce tie obiectul despre sine;
comportamentul: este definit de modul n care obiectul reacioneaz la evenimente

cauzate de surse externe i de modul n care interacioneaz cu alte obiecte prin intermediul mesajelor. Comportamentul ne arat ce face obiectul. Comportamentul este descris printr-un set de metode (operaii). Metoda exprim modalitatea n care obiectul trateaz un mesaj. Implementarea unei metode este echivalent cu o funcie sau o procedur din programarea clasic. Starea unui obiect este o caracteristic static a sa, iar comportamentul o caracteristic dinamic.

Mark Steven Heyman, Bazele Visual Basic 4 - Editura Teora 1997, pagina 25
5

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Un obiect se reprezint n memorie astfel:

Exemple de obiecte

S considerm de exemplu obiectul student Georgescu Petre, descris prin atributele: CNP: (1700213100400); Nume (Georgescu); Prenume (Petre); Facultatea (CIG); Anul (2); Grupa (600). Georgescu Petre are existen i identitate proprii i este distinct de ali studeni. Comportamentul lui Georgescu Petre este definit prin aciunile/operaiile pe care acesta le execut n anumite circumstane, descrise de regul prin verbe: a nva, a merge la coal, a scrie, etc. n mod asemntor, pot fi considerate obiecte i studenii Ionescu, Pavelescu, etc. ntrebri 1. Definii conceptul de obiect. 2. Care sunt caracteristicile obiectelor ? 3. Ce se nelege prin stare ? 4. Cum se implementeaz o metod? 2.3. Clasa Definirea conceptului de clas

Clasa reprezint un tip de date obinut prin abstractizarea unor obiecte similare. O clas este schia (modelul) unui obiect. Clasa spune mainii virtuale cum s construiasc un obiect de tipul respectiv. Structura (membri) clasei

Din punct de vedere structural, o clas este descris prin:


Copyright Catedra Informatic de Gestiune, 2010
6

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

denumire; atribute (date); metode (operaii). Atributele i metodele se mai numesc i membri clasei. Atributele vor servi drept depozite pentru datele concrete deinute de obiectele clasei, iar metodele vor fi partajate de toate instanele clasei. Atunci cnd proiectm o clas ne gndim la obiectele care vor fi create din clasa respectiv. Identificm ce tiu obiectele despre ele nsele i ce vor face. Practic cnd proiectm o clas ne gndim la informaiile (datele) pe care un obiect trebuie s le dein despre el nsui, dar vom proiecta i metodele care opereaz asupra datelor respective. Astfel:
Membri Clasa 1 Clasa 2 Clasa 3 Conine Nume tie

Atribute

Metode

Face

Membri unei clase pot viza: clasa n ansamblu ei nu necesit o instan (atribute i metode de clas sau statice shared \sher\); fiecare obiect al clasei (atribute i metode de instan). Orice clas trebuie s implementeze cel puin urmtoarele tipuri de metode: constructori - asigur crearea i iniializarea obiectelor; destructori asigur eliminarea obiectelor; modificatori permit actualizarea strii obiectelor; selectori permit redarea strii obiectelor. Tipurile de clase

Pot exista dou tipuri de clase:

clase instaniabile sau concrete: clasele care au instanieri directe (contract, factur, etc.; triunghi, cerc, etc.; femeie, brbat);
Copyright Catedra Informatic de Gestiune, 2010
7

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

clase abstracte: clasele care nu pot fi instaniate direct, nu au corespondene concrete din realitate (obiect; document; form geometric; om);

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

La nivel intuitiv o ierarhie de clase i instane ale acestora pot fi reprezentate astfel:

ntrebri

1. Definii conceptul de clas. 2. Care este structura unei clase? 3. Care metode trebuie s le implementeze orice clas? 4. Ce sunt clasele abstracte i prin ce se caracterizeaz? 2.4. ncapsularea Definirea conceptului de ncapsulare

ncapsularea reprezint capacitatea obiectelor (claselor) de a conine la un loc att date, ct i operaii/metode, dintre care numai o parte sunt vizibile din exterior. ncapsularea asigur faptul c starea intern a obiectelor nu poate fi cunoscut sau schimb n mod direct (ci doar prin metode i proprieti puse la dispoziie de obiectul respectiv); doar metodele i proprietile proprii ale obiectului pot accesa starea acestuia i i pot induce un anumit comportament. Fiecare tip de obiect expune o interfa pentru celelalte obiecte care specific modul cum acele obiecte pot interaciona cu el.

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Principiul ncapsulrii impune ca toate atributele de instan ale unei clase s fie invizibile din exteriorul acesteia, accesarea lor fiind posibil numai prin intermediul unei metode dedicate sau proprieti care formeaz interfaa clasei.

Copyright Catedra Informatic de Gestiune, 2010

10

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Calificatori pentru protecia membrilor unei clase

Pentru asigurarea securitii datelor stocate ntr-un obiect i pentru implementarea ncapsulrii, membrilor unei clase li se pot aplica urmtorii calificatori de acces: public: atributul sau metoda sunt accesibili din afara clasei; protected: atributul sau metoda sunt accesibili numai n cadrul clasei sau al claselor derivate prin motenire; friend: atributul sau metoda sunt accesibili numai n cadrul proiectului n care a fost definit; private: atributul sau metoda nu sunt accesibili din afara clasei; protected friend: combinaia celor dou; Avantajele ncapsulrii

Principalele avantaje ale ncapsulrii sunt: datele nu mai sunt separate de prelucrri; obiectele apar ca nite cutii negre care ascund detaliile de implementare; se asigur securitatea datelor stocate de un obiect mpotriva modificrilor neautorizate sau accidentale; obiectele sunt uor de utilizat prin intermediul interfeei care descrie ce poate realiza o clas (NU cum).

ntrebri 1. Definii conceptul de ncapsulare. 2. n ce const principiul ncapsulrii ? 3. Ce efect are utilizarea calificatorului protected asupra membrilor unei clase? 4. Ce efect are utilizarea calificatorului friend asupra membrilor unei clase? 5. Care sunt principalele avantaje ale ncapsulrii?

Copyright Catedra Informatic de Gestiune, 2010

11

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

2.5. Motenirea Definirea conceptului de motenire

Motenirea procesul prin care atributele i operaiile unei clase (clas de baz, superclas) sunt preluate automat de o alt clas (clas derivat sau subclas). Orice clas derivat va fi de tipul (is a) clasei de baz. Prin motenire se pot exprima relaii deosebite ntre clase: clasificri, ierarhizri, generalizri, specializri. Pai necesari implementrii motenirii

Pentru a eficientiza activitatea de proiectare a claselor i pentru valorificarea relaiilor dintre clase se procedeaz astfel: se analizeaz ce au clasele n comun; se abstractizeaz caracteristicile comune care se extrag i se pun ntr-o nou clas (clas de baz); se leag clasele analizate (clase derivate) la noua clas (clas de baz) printr-o relaie de motenire. Dac apar cerine suplimentare se poate proiecta o nou clas (clasa derivat, secundar sau copil ), care deriv din clasa de baz (sau printe), care va moteni caracteristicile acesteia, creia i putem aduga atribute i metode noi, sau putem s rescriem anumite metode pe care le motenete conform noilor cerine. De exemplu n domeniul medicinii, dac vom analiza entitile medici, vom identifica ca atribute comune c lucreazaInSpital iar ca metode comune c trateazaBolnavi. Prin aprofundarea analizei vom identifica de exemplu c: medicii de familie au ca atribut suplimentar c faceVizitaLaDomiciliu, iar ca metode suplimentare c daSfaturi; chirurgii au prin natura specializrii un mod diferit de tratament i ca atare, metoda trateazaPacient va trebui rescris. Mai mult putem s introducem o nou metod faceIncizi.

Copyright Catedra Informatic de Gestiune, 2010

12

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

n aceste condiii, clasele proiectate se pot reprezenta ca n diagrama urmtoare:

ntrebri 1. Definii conceptul de motenire. 2. Care sunt principalii pai necesari implementrii motenirii? 3. Care este utilitatea motenirii?

Copyright Catedra Informatic de Gestiune, 2010

13

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

2.6. Polimorfismul Definirea conceptului de polimorfism

Polimorfismul reprezint capacitatea obiectelor de a se comporta diferit la primirea aceluiai mesaj (adic obiecte diferite conin aceleai operaii, care ns vor executa aciuni diferite exemple: apeleaz un numr de telefon, schimb viteza la main). Polimorfismul mrete flexibilitatea utilizrii obiectelor. Procedee de implementare a polimorfismului

Polimorfismul poate fi asigurat prin: suprancrcarea unei metode n cadrul aceleai clase. Practic n aceeai clas avem dou sau mai multe metode cu aceeai denumire dar cu un numr diferit de parametri (cu semntur diferit); rescrierea (redefinirea) unei metode motenite n clasele derivate. Practic n clasa derivat vom avea o metod cu aceeai denumire ca n clasa de baz, dar care execut prelucrri diferite fa de cea din clasa de baz;

ntrebri 1. Definii conceptul de polimorfism. 2. Cum se implementeaz polimorfismul ? 3. Ce presupune suprancrcarea ? 4. Ce presupune rescrierea ? 2.7. Proiectarea arborelui de motenire al claselor Etape i raionamente pentru proiectarea unui arbore de motenire

Pentru realizarea unui arbore de motenire corect se procedeaz astfel: Identificm obiectele cu care trebuie s lucrm; Cutm obiectele care au atribute i comportamente comune; Proiectm o clas care reprezint starea i comportamentul pe care l au n comun toate obiectele identificate;
14

Copyright Catedra Informatic de Gestiune, 2010

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Identificm alte posibiliti de folosire a abstractizrii, cutnd dou sau mai multe subclase care ar putea avea un comportament comun; Completm ierarhia de clase

Proiectarea arborelui de motenire pentru un simulator de animale2

Specificaiile de proiectare prevd s se proiecteze un simulator de animale care permite utilizatorului s plaseze diferite animale ntr-un mediu pentru a vedea ce se ntmpl. Specificaiile prevd o list cu unele animale care vor aprea n tablou dar nu toate. tim c fiecare animal va fi reprezentat de un obiect i c obiectul se va mica n mediu, fcnd lucruri specifice programate pentru tipul respectiv. n plus vrem ca ali programatori s poat aduga noi specii de animale n program, n orice moment. Aa cum am prezentat mai sus vom proceda astfel: (1) Identificm obiectele din list. Animalele (obiectele n cazul nostru) din list sunt: leu, hipopotam, tigru, cine, pisic i lup. (2) Cutm obiectele care au stri i comportamente comune. Cutm rspuns la ntrebrile: Ce au aceste ase tipuri de animale n comun? Care este legtura ntre aceste ase tipuri de animale?

(3) Stabilim caracteristicile, abstracte, comune de stare (atributele) i comportament (metodele) pentru toate animalele. Practic proiectm clasa abstract (superclasa) Animal cu atributele i metodele identificate la toate animalele. Avem astfel: cinci atribute comune: 1. culoare; 2. greutate; 3. for; 4. limiteTeritoriale; 5. poziie patru metode comune: 6. faceZgomot();
2

Copyright Catedra Informatic de Gestiune, 2010

Prelucrare dup: Kathy SIERRA, Bert BATES Atac la Java, Editura Teora, Bucureti, 2006, pag. 170-175 15

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

7. mnnc(); 8. doarme(); 9. seMic(). la aceast clas vor fi legate cele ase clase pentru fiecare animal din list. (4) Analizm dac o subclas din cele 6 are nevoie de comportamente specifice (cu alte cuvinte dac pentru anumite subclase trebuie s rescriem anumite metode). Practic putem constat de exemplu c leul i hipopotamul mnnc diferit. De asemenea cinele i pisica fac zgomot n mod diferit. Ca atare decidem c vor rescrie metodele faceZgomot() i manaca(). (5) Identificm alte posibiliti de folosire a abstractizrii, cutnd dou sau mai multe subclase care ar putea avea un comportament comun. Practic constatm anumite asemnri de comportament ntre cine i lup i ntre leu, tigru i pisic. innd seama i de clasificarea pe regnuri, genuri i familii, vom obine urmtorul arbore de motenire:

Copyright Catedra Informatic de Gestiune, 2010

16

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

ntrebri 1. Care sunt principalii pai necesari pentru construirea unui arbore de motenire? 2. Cum se proiecteaz superclasa? 3. Cum identificm metodele care se vor rescrie? 4. Ce raionamente folosim pentru a identifica noi posibiliti de abstractizare?

Bibliografie Unitatea de nvare 2

1. A. COZGAREA Programarea calculatoarelor, introducere n VB.NET, Editura ASE Bucureti, 2008; 2. Gh. POPESCU Programarea calculatoarelor n limbajul Visual Basic, Editura Gestiunea Bucureti, 2007. 3. Kathy SIERRA, Bert BATES Atac la Java, Editura Teora, 2006

Copyright Catedra Informatic de Gestiune, 2010

17

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Copyright Catedra Informatic de Gestiune, 2010

18

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE ________________________________________________________________________________________________________________ _

Copyright Catedra Informatic de Gestiune, 2010

19

You might also like