Sunteți pe pagina 1din 16

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

Confereniar universitar dr. Veronica POPESCU

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

Confereniar universitar dr. Veronica POPESCU

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE


_________________________________________________________________________________________________________________

OBIECTIVELE UNITII DE NVARE 2

nsuirea

cunotinelor necesare

realizrii

de

programe

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, acestea s formeze un modul, adic o unitate care separ
implementarea de interfa, ceea ce implic posibilitatea refolosirii codului.

Confereniar universitar dr. Veronica POPESCU

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 care 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,
4

Confereniar universitar dr. Veronica POPESCU

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 evenimente1. 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
fiind 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

Confereniar universitar dr. Veronica POPESCU

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:


denumire;
6

Confereniar universitar dr. Veronica POPESCU

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE


_________________________________________________________________________________________________________________

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

Atribute

tie

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);
7

Confereniar universitar dr. Veronica POPESCU

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);
La nivel intuitiv o ierarhie de clase i instane ale acestora poatet fi reprezentat 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 n care acele obiecte pot interaciona cu el.

Confereniar universitar dr. Veronica POPESCU

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 prin proprieti care formeaz interfaa clasei.

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?

Confereniar universitar dr. Veronica POPESCU

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE


_________________________________________________________________________________________________________________

2.5. Motenirea

Definirea conceptului de motenire

Motenirea reprezint 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 faptul 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 faceIncizii.

10

Confereniar universitar dr. Veronica POPESCU

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?

11

Confereniar universitar dr. Veronica POPESCU

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;
Identificm alte posibiliti de folosire a abstractizrii, cutnd dou sau mai multe
subclase care ar putea avea un comportament comun;
Completm ierarhia de clase.
12

Confereniar universitar dr. Veronica POPESCU

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE


_________________________________________________________________________________________________________________

Proiectarea arborelui de motenire pentru un simulator de animale

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, n orice moment, vrem ca ali programatori s poat aduga noi specii de animale n
program.
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();
7. mnnc();
8. doarme();
9. seMic().

la aceast clas vor fi legate cele ase clase pentru fiecare animal din list.

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

Confereniar universitar dr. Veronica POPESCU

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE


_________________________________________________________________________________________________________________

(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 vom 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:

14

Confereniar universitar dr. Veronica POPESCU

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

15

Confereniar universitar dr. Veronica POPESCU

Unitatea de nvare 2 PARADIGMELE PROGRAMRII ORIENTATE PE OBIECTE


_________________________________________________________________________________________________________________

OBIECTIVELE UNITII DE NVARE 2.............................................................................. 3


2.1. Programarea orientat pe obiecte ........................................................................................ 3
2.2. Obiectul ................................................................................................................................. 4
2.3. Clasa ...................................................................................................................................... 6
2.4. ncapsularea .......................................................................................................................... 8
2.5. Motenirea........................................................................................................................... 10
2.6. Polimorfismul ...................................................................................................................... 12
2.7. Proiectarea arborelui de motenire al claselor ................................................................... 12
Bibliografie Unitatea de nvare 2 ........................................................................................... 15

16

Confereniar universitar dr. Veronica POPESCU