Sunteți pe pagina 1din 17

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

UNITATEA DE ÎNVĂŢARE 2

PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE


Autori:
Conferenţiar universitar dr. Veronica POPESCU
Profesor universitar dr. Gheorghe POPESCU

Cuprins
OBIECTIVELE UNITĂŢII DE ÎNVĂŢARE 2 ............................................................................... 3
2.1. Programarea orientată pe obiecte ............................................................................. 3

Necesitatea programării orientate pe obiecte ................................................................ 3

Conceptele de bază ale programării orientate pe obiecte.............................................. 4

Structura unei program în programarea orientată pe obiecte ....................................... 4

 Întrebări ........................................................................................................................ 4
2.2. Obiectul ...................................................................................................................... 4

Definirea conceptului de obiect ....................................................................................... 4

Caracteristicile unui obiect ............................................................................................... 5

Exemple de obiecte .......................................................................................................... 6


 Întrebări .......................................................................................................................... 6
2.3. Clasa ............................................................................................................................ 6

Definirea conceptului de clasă ........................................................................................ 6

Structura (membri) clasei ................................................................................................. 6

Tipurile de clase ................................................................................................................ 7

 Întrebări ........................................................................................................................ 8
2.4. Încapsularea ............................................................................................................... 8

Definirea conceptului de încapsulare .............................................................................. 8

Calificatori pentru protecţia membrilor unei clase ......................................................... 9


 Întrebări .......................................................................................................................... 9
2.5. Moştenirea ............................................................................................................... 10

Definirea conceptului de moştenire............................................................................... 10

Paşi necesari implementării moştenirii .......................................................................... 10


1
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

 Întrebări ...................................................................................................................... 11
2.6. Polimorfismul ........................................................................................................... 12

Definirea conceptului de polimorfism ........................................................................... 12

Procedee de implementare a polimorfismului .............................................................. 12


 Întrebări ........................................................................................................................ 12
2.7. Proiectarea arborelui de moştenire al claselor ....................................................... 12

Etape şi raţionamente pentru proiectarea unui arbore de moştenire ......................... 12

Proiectarea arborelui de moştenire pentru un simulator de animale 2 ........................ 13


 Întrebări ........................................................................................................................ 15
Răspunsuri și indicații la întrebări și teste .......................................................................... 15
Concluzii .............................................................................................................................. 16

2
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

OBIECTIVELE UNITĂŢII DE ÎNVĂŢARE 2

 Însuşirea cunoştinţelor necesare realizării de programe în tehnologia programării


orientate pe obiecte.
 Cunoaşterea şi însuşirea conceptelor de bază ale programării orientate pe obiecte:
obiect, abstractizare, clasă, încapsulare, moştenire, polimorfism şi persistenţă.
 Proiectarea arborelui de moştenire al claselor.

Timp de lucru: 4 ore

2.1. Programarea orientată pe obiecte

Necesitatea programării orientate pe obiecte

Programarea orientată pe obiecte (OOP – Object Oriented Programming) este tehnica cea mai
utilizată începând cu începutul anilor ’90, când 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 totuși dezvoltate încă din anii ’60, odată cu
proiectarea limbajului Simula67.
Programarea orientată pe obiect (Programare Orientată Obiectual) este unul din cei mai
importanţi paşi făcuţi în evoluţia limbajelor de programare spre o mai puternică
abstractizare în implementarea programelor. Ea a apărut din necesitatea exprimării problemei
într-un mod mai natural fiinţei umane. Astfel unităţile care alcătuiesc un program se apropie
mai mult de modul nostru de a gândi decât modul de lucru al calculatorului.
Până la apariţia programării orientate pe obiect programele erau implementate în limbaje de
programare procedurale (C, Pascal) sau în limbaje care nici măcar nu ofereau o modalitate
de grupare a instrucţiunilor în unităţi logice (funcţii, proceduri) cum este cazul limbajului de
asamblare (assembler). Altfel spus o problemă preluată din natură trebuia fragmentată în
repetate rânduri astfel încât să se identifice elementele distincte, implementabile într-un
limbaj de programare. O mare problemă a programării procedurale era separarea datelor de
unităţile care prelucrau datele (subrutinele), ceea ce făcea foarte dificilă extinderea şi
întreţinerea unui program. Astfel s-a pus problema ca aceste două entităţi (date şi subrutine)
să fie grupate într-un anumit mod, astfel încât subrutinele să "ştie" în permanenţă ce date
prelucrează şi, mai mult decât atât, ele să formeze un modul, adică o unitate care separă
implementarea de interfaţă, ceea ce implică posibilitatea refolosirii codului.

3
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

Conceptele de bază ale programării orientate pe obiecte


Conceptele de bază ale programării orientate obiect sunt:
 obiectul;
 abstractizarea: Este posibilitatea ca un program să ignore unele aspecte ale informaţiei
pe care o manipulează, adică posibilitatea de a se concentra asupra esenţialului. Este
procesul prin care se identifică şi se reţin numai caracteristicile esenţiale ale realităţii
modelate. Cel mai des, abstractizarea este întâlnită atunci când obiectele cu aceleaşi
atribute şi acelaşi comportament sunt grupate în tipuri abstracte numite clase. Clasele
sunt reprezentări (modele) abstracte, conceptuale ale unor entităţi;
 clasa;
 încapsularea (ascunderea de informaţii);
 moştenirea;
 polimorfismul: Este abilitatea de a procesa obiectele în mod diferit, în funcţie de tipul
sau de clasa lor. Mai exact, este abilitatea de a redefini metode pentru clasele derivate.
 persistenţa: descrie durata de viaţă a unui obiect în raport cu aplicaţia 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.

 Întrebări

1. Prezentaţi câteva dintre avantajele programării orientate pe obiecte.


2. Care sunt conceptele de bază ale programării orientate pe obiecte?
3. Ce se înţelege prin abstractizare?
4. Ce se înţelege 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 proprietăţi. Obiectele reprezintă tot ceea ce ne înconjoară: lucruri, fiinţe, procese,

4
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

fenomene, etc. Obiectele comunică între ele prin intermediul mesajelor: obiectul care
transmite mesajul este emiţător, iar obiectul care recepţionează mesajul este receptor.
Trăim într-o lume de obiecte şi evenimente1. “Dimineaţa apăsaţi soneria ceasului
deşteptător, deschideţi frigiderul şi destupaţi o sticlă de suc de portocale. Ceva mai târziu,
deschideţi portiera maşinii, învârtiţi cheia în contact, porniţi motorul şi apoi apăsaţi pedala
de acceleraţie. Rareori vă întrebaţi cum funcţionează ceasul deşteptător, cum răceşte
frigiderul alimentele sau cum se transformă în mod miraculos benzina în cai putere. Nimic
nu vi se pare mai natural sau mai transparent decât relaţia dintre obiecte şi evenimentele pe
care le generaţi atunci când interacţionaţi 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 (proprietăţile) fundamentale ale obiectului sunt:
 identitatea: este dată de un cod unic care asigură diferenţierea 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 proprietăţilor sau atributelor unui obiect).
Starea obiectelor arată ce ştie obiectul despre sine;
 comportamentul: este definit de modul în care obiectul reacţionează la evenimente
cauzate de surse externe şi de modul în care interacţionează cu alte obiecte prin
intermediul mesajelor. Comportamentul ne arată ce face obiectul. Comportamentul
este descris printr-un set de metode (operaţii). Metoda exprimă modalitatea în care
obiectul tratează un mesaj. Implementarea unei metode este echivalentă cu o funcţie
sau o procedură din programarea clasică.
Starea unui obiect este o caracteristică statică a sa, iar comportamentul o caracteristică
dinamică.

1
Mark Steven Heyman, Bazele Visual Basic 4 - Editura Teora 1997, pagina 25
5
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

Un obiect se reprezintă în memorie astfel:

Exemple de obiecte
Să considerăm 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 alţi studenţi.
Comportamentul lui Georgescu Petre este definit prin acţiunile/operaţiile pe care acesta le
execută în anumite circumstanţe, descrise de regulă prin verbe: a învăţa, a merge la şcoală, a
scrie, etc. În mod asemănător, pot fi considerate obiecte şi studenţii Ionescu, Pavelescu, etc.

 Întrebări

1. Definiţi conceptul de obiect.


2. Care sunt caracteristicile obiectelor ?
3. Ce se înţelege prin stare ?
4. Cum se implementează o metodă?

2.3. Clasa

Definirea conceptului de clasă

Clasa reprezintă un tip de date obţinut prin abstractizarea unor obiecte similare. O clasă este
schiţa (modelul) unui obiect. Clasa spune maşinii virtuale cum să construiască un obiect de
tipul respectiv.

Structura (membri) clasei


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

6
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

 denumire;
 atribute (date);
 metode (operaţii).
Atributele şi metodele se mai numesc şi membri clasei. Atributele vor servi drept depozite
pentru datele concrete deţinute de obiectele clasei, iar metodele vor fi partajate de toate
instanţele clasei.
Atunci când proiectăm o clasă ne gândim la obiectele care vor fi create din clasa respectivă.
Identificăm ce ştiu obiectele despre ele însele şi ce vor face. Practic când proiectăm o clasă ne
gândim la informaţiile (datele) pe care un obiect trebuie să le deţină despre el însuşi, dar vom
proiecta şi metodele care operează asupra datelor respective. Astfel:
Membri Clasa 1 Clasa 2 Clasa 3 Conţine
Nume

Ştie
Atribute

Face
Metode

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 puţin următoarele tipuri de metode:


 constructori - asigură crearea şi iniţializarea obiectelor;
 destructori – asigură eliminarea obiectelor;
 modificatori – permit actualizarea stării obiectelor;
 selectori – permit redarea stării obiectelor.

Tipurile de clase
Pot exista două tipuri de clase:
 clase instanţiabile sau concrete: clasele care au instanţieri directe (contract, factură,
etc.; triunghi, cerc, etc.; femeie, bărbat);

7
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

 clase abstracte: clasele care nu pot fi instanţiate direct, nu au corespondenţe concrete


din realitate (obiect; document; formă geometrică; om);
La nivel intuitiv o ierarhie de clase şi instanţe ale acestora pot fi reprezentate astfel:

 Întrebări

1. Definiţi 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 conţine la un loc atât date, cât
şi operaţii/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 proprietăţi puse la dispoziţie de obiectul respectiv); doar
metodele şi proprietăţile 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 interacţiona cu el.

8
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

Principiul încapsulării 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 proprietăţi care formează interfaţa clasei.

Calificatori pentru protecţia membrilor unei clase


Pentru asigurarea securităţii datelor stocate într-un obiect şi pentru implementarea
încapsulării, membrilor unei clase li se pot aplica următorii 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 moştenire;
 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: combinaţia celor două;

Avantajele încapsulării

Principalele avantaje ale încapsulării sunt:


 datele nu mai sunt separate de prelucrări;
 obiectele apar ca nişte cutii negre care ascund detaliile de implementare;
 se asigură securitatea datelor stocate de un obiect împotriva modificărilor neautorizate
sau accidentale;
 obiectele sunt uşor de utilizat prin intermediul interfeţei care descrie ce poate realiza o
clasă (NU cum).

 Întrebări

1. Definiţi conceptul de încapsulare.


2. În ce constă principiul încapsulării ?
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 încapsulării?

9
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

2.5. Moştenirea

Definirea conceptului de moştenire

Moştenirea procesul prin care atributele şi operaţiile 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 moştenire se pot exprima relaţii deosebite între clase:
clasificări, ierarhizări, generalizări, specializări.

Paşi necesari implementării moştenirii


Pentru a eficientiza activitatea de proiectare a claselor şi pentru valorificarea relaţiilor 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 relaţie
de moştenire.
Dacă apar cerinţe suplimentare se poate proiecta o nouă clasă (clasa derivată, secundară sau
copil ), care derivă din clasa de bază (sau părinte), care va moşteni caracteristicile acesteia,
căreia îi putem adăuga atribute şi metode noi, sau putem să rescriem anumite metode pe care
le moşteneşte conform noilor cerinţe.
De exemplu în domeniul medicinii, dacă vom analiza entităţile 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 specializării un mod diferit de tratament şi ca atare,
metoda trateazaPacient va trebui rescrisă. Mai mult putem să introducem o nouă
metodă faceIncizi.

10
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

În aceste condiţii, clasele proiectate se pot reprezenta ca în diagrama următoare:

 Întrebări

1. Definiţi conceptul de moştenire.


2. Care sunt principalii paşi necesari implementării moştenirii?
3. Care este utilitatea moştenirii?

11
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

2.6. Polimorfismul

Definirea conceptului de polimorfism

Polimorfismul reprezintă capacitatea obiectelor de a se comporta diferit la primirea aceluiaşi


mesaj (adică obiecte diferite conţin aceleaşi operaţii, care însă vor executa acţiuni diferite –
exemple: apelează un număr de telefon, schimbă viteza la maşină).
Polimorfismul măreşte flexibilitatea utilizării obiectelor.

Procedee de implementare a polimorfismului

Polimorfismul poate fi asigurat prin:


 supraîncărcarea unei metode în cadrul aceleaşi clase. Practic în aceeaşi clasă avem
două sau mai multe metode cu aceeaşi denumire dar cu un număr diferit de parametri
(cu semnătură diferită);
 rescrierea (redefinirea) unei metode moştenite în clasele derivate. Practic în clasa
derivată vom avea o metodă cu aceeaşi denumire ca în clasa de bază, dar care execută
prelucrări diferite faţă de cea din clasa de bază;

 Întrebări

1. Definiţi conceptul de polimorfism.


2. Cum se implementează polimorfismul ?
3. Ce presupune supraîncărcarea ?
4. Ce presupune rescrierea ?

2.7. Proiectarea arborelui de moştenire al claselor

Etape şi raţionamente pentru proiectarea unui arbore de moştenire

Pentru realizarea unui arbore de moştenire corect se procedează astfel:


 Identificăm obiectele cu care trebuie să lucrăm;
 Căutăm obiectele care au atribute şi comportamente comune;
 Proiectăm o clasă care reprezintă starea şi comportamentul pe care îl au în comun
toate obiectele identificate;
 Identificăm alte posibilităţi de folosire a abstractizării, căutând două sau mai multe
subclase care ar putea avea un comportament comun;

12
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

 Completăm ierarhia de clase

Proiectarea arborelui de moştenire pentru un simulator de animale 21

Specificaţiile de proiectare prevăd să se proiecteze un simulator de animale care permite


utilizatorului să plaseze diferite animale într-un mediu pentru a vedea ce se întâmplă.
Specificaţiile prevăd o listă cu unele animale care vor apărea în tablou dar nu toate. Ştim că
fiecare animal va fi reprezentat de un obiect şi că obiectul se va mişca în mediu, făcând lucruri
specifice programate pentru tipul respectiv.
În plus vrem ca alţi programatori să poată adăuga noi specii de animale în program, în orice
moment.
Aşa cum am prezentat mai sus vom proceda astfel:
(1) Identificăm obiectele din listă.
- Animalele (obiectele în cazul nostru) din listă sunt: leu, hipopotam, tigru,
câine, pisică şi lup.
(2) Căutăm obiectele care au stări şi comportamente comune. Căutăm răspuns la
întrebările:
- Ce au aceste şase tipuri de animale în comun?
- Care este legătura între aceste şase tipuri de animale?
(3) Stabilim caracteristicile, abstracte, comune de stare (atributele) şi comportament
(metodele) pentru toate animalele.
- Practic proiectăm 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. poziţie
 patru metode comune:
6. faceZgomot();
7. mănâncă();
8. doarme();
9. seMişcă().

2
Prelucrare după: Kathy SIERRA, Bert BATES – Atac la Java, Editura Teora, Bucureşti, 2006, pag. 170-175

13
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

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

(4) Analizăm 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 mănâncă diferit.
De asemenea câinele şi pisica fac zgomot în mod diferit. Ca atare decidem
că vor rescrie metodele faceZgomot() şi manaca().
(5) Identificăm alte posibilităţi de folosire a abstractizării, căutând două sau mai multe
subclase care ar putea avea un comportament comun.
- Practic constatăm anumite asemănări de comportament între câine şi lup şi
între leu, tigru şi pisică. Ţinând seama şi de clasificarea pe regnuri, genuri şi
familii, vom obţine următorul arbore de moştenire:

14
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

 Întrebări

1. Care sunt principalii paşi necesari pentru construirea unui arbore de moştenire?
2. Cum se proiectează superclasa?
3. Cum identificăm metodele care se vor rescrie?
4. Ce raţionamente folosim pentru a identifica noi posibilităţi de abstractizare?

Răspunsuri și indicații la întrebări și teste

2.1. Programarea orientată pe obiecte

1. Prezentaţi câteva dintre avantajele programării orientate pe obiecte. – pagina 3: Necesitatea


programării orientate pe obiecte
2. Care sunt conceptele de bază ale programării orientate pe obiecte? – pagina 4: Conceptele de
bază ale programării orientate pe obiecte
3. Ce se înţelege prin abstractizare? – pagina 4: Conceptele de bază ale programării orientate pe
obiecte (abstractizarea)
4. Ce se înţelege prin persistenţă? – pagina 4: Conceptele de bază ale programării orientate pe
obiecte (persistenţa)
5. Care este structura unui program în programarea orientată pe obiecte? – pagina 4: Structura
unei program în programarea orientată pe obiecte

2.2. Obiectul

1. Definiţi conceptul de obiect. – pagina 4: Definirea conceptului de obiect


2. Care sunt caracteristicile obiectelor ? – pagina 5: Caracteristicile unui obiect
3. Ce se înţelege prin stare ? – pagina 5: Caracteristicile unui obiect (starea)
4. Cum se implementează o metodă? – pagina 5: Caracteristicile unui obiect (comportamentul)

2.3. Clasa

1. Definiţi conceptul de clasă. – pagina 6: Definirea conceptului de clasă


2. Care este structura unei clase? – paginile 6 și 7: Structura (membri) clasei
3. Care metode trebuie să le implementeze orice clasă? – pagina 7: constructori , destructor,
modificatori și selectori.
4. Ce sunt clasele abstracte şi prin ce se caracterizează? – pagina 8: Tipurile de clase

2.4. Încapsularea

1. Definiţi conceptul de încapsulare. – pagina 8: Definirea conceptului de încapsulare


2. În ce constă principiul încapsulării ? – pagina 8: Definirea conceptului de încapsulare
3. Ce efect are utilizarea calificatorului protected asupra membrilor unei clase? – pagina 9:
Calificatori pentru protecţia membrilor unei clase
4. Ce efect are utilizarea calificatorului friend asupra membrilor unei clase? – pagina 9:
Calificatori pentru protecţia membrilor unei clase
5. Care sunt principalele avantaje ale încapsulării? – pagina 9: Avantajele încapsulării

2.5. Moştenirea
15
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

1. Definiţi conceptul de moştenire. – pagina 10: Definirea conceptului de moştenire


2. Care sunt principalii paşi necesari implementării moştenirii? – pagina 10: Paşi necesari
implementării moştenirii
3. Care este utilitatea moştenirii? – pagina 10: Pentru a eficientiza activitatea de proiectare a
claselor şi pentru valorificarea relaţiilor dintre clase.

2.6. Polimorfismul

1. Definiţi conceptul de polimorfism. – pagina 12: Definirea conceptului de polimorfism


2. Cum se implementează polimorfismul ? – pagina 12: Procedee de implementare a
polimorfismului
3. Ce presupune supraîncărcarea ? - în aceeaşi clasă avem două sau mai multe metode cu
aceeaşi denumire dar cu un număr diferit de parametri (cu semnătură diferită);
4. Ce presupune rescrierea ? - în clasa derivată vom avea o metodă cu aceeaşi denumire ca în
clasa de bază, dar care execută prelucrări diferite faţă de cea din clasa de bază;

2.7. Proiectarea arborelui de moştenire al claselor

1. Care sunt principalii paşi necesari pentru construirea unui arbore de moştenire? – pagina 12:
Etape şi raţionamente pentru proiectarea unui arbore de moştenire
2. Cum se proiectează superclasa? – pagina 13: Proiectarea arborelui de moştenire pentru un
simulator de animale
3. Cum identificăm metodele care se vor rescrie? – prin analizarea metodelor tuturor obiectelor
vizate și identificarea metodelor comune
4. Ce raţionamente folosim pentru a identifica noi posibilităţi de abstractizare? - Identificăm
alte posibilităţi de folosire a abstractizării, căutând două sau mai multe subclase care ar putea avea un
comportament comun

Concluzii

Programarea orientată pe obiecte (OOP – Object Oriented Programming) este tehnica cea mai
utilizată începând cu începutul anilor ’90, când 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 programării orientate obiect sunt: obiect, abstractizare, clasă,
încapsulare, moştenire, polimorfism şi persistenţă.
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 unicde
proprietăţi. Obiectele reprezintă tot ceea ce ne înconjoară:lucruri, fiinţe, procese, fenomene, etc.
Clasa reprezintă un tip de date obţinut prin abstractizarea unor obiecte similare. O clasă este
schiţa (modelul) unui obiect. Clasa spune maşinii virtuale cum să construiască un obiect de tipul
respectiv.
Încapsularea reprezintă capacitatea obiectelor (claselor) de a conţine la un loc atât date, câtşi
operaţii/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 proprietăţi puse la dispoziţie de obiectul respectiv); doarmetodele şi proprietăţile
proprii ale obiectului pot accesa starea acestuia şi îi pot induce un anumit comportament.
Moştenirea procesul prin care atributele şi operaţiile 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 moştenire se pot exprima relaţii deosebite între clase: clasificări, ierarhizări,
generalizări, specializări.
16
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU
Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE

Polimorfismul reprezintă capacitatea obiectelor de a se comporta diferit la primirea aceluiaşi mesaj


(adică obiecte diferite conţin aceleaşi operaţii, care însă vor executa acţiuni diferite – exemple:
apelează un număr de telefon, schimbă viteza la maşină).

 Bibliografie Unitatea de învăţare 2

1. COZGAREA – Programarea calculatoarelor, introducere în VB.NET, Editura


ASE Bucureşti, 2008;
2. Gh. POPESCU – Programarea calculatoarelor în limbajul Visual Basic, Editura
Gestiunea Bucureşti, 2007.
3. Kathy SIERRA, Bert BATES – Atac la Java, Editura Teora, 2006

17
Limbaje de programare
© Departamentul Informatică de Gestiune, Conferenţiar universitar dr. Veronica POPESCU & Profesor universitar dr. Gheorghe POPESCU

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