_________________________________________________________________________________________________________________
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
nsuirea
cunotinelor necesare
realizrii
de
programe
tehnologia
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.
Un program este format dintr-un ansamblu de obiecte ce comunic ntre ele, prin intermediul
mesajelor.
ntrebri
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.
Mark Steven Heyman, Bazele Visual Basic 4 - Editura Teora 1997, pagina 25
5
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
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.
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
Tipurile de clase
clase instaniabile sau concrete: clasele care au instanieri directe (contract, factur,
etc.; triunghi, cerc, etc.; femeie, brbat);
7
ntrebri
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.
Avantajele ncapsulrii
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?
2.5. Motenirea
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.
10
ntrebri
1. Definii conceptul de motenire.
2. Care sunt principalii pai necesari implementrii motenirii?
3. Care este utilitatea motenirii?
11
2.6. Polimorfismul
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
Animalele (obiectele n cazul nostru) din list sunt: leu, hipopotam, tigru,
cine, pisic i lup.
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
(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).
-
(5) Identificm alte posibiliti de folosire a abstractizrii, cutnd dou sau mai multe
subclase care ar putea avea un comportament comun.
-
14
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?
15
16