Sunteți pe pagina 1din 13

Limbaje de programare

inginereti
Tema 8
Concepte de baz ale
programrii orientate obiect.

INTRODUCERE
"OOP" ("Object Oriented Programming") = disciplina
programrii obiectuale (orientate-obiect).
Are la baz ideea unificrii datelor cu modalitile de
prelucrare a acestora i manevreaz entiti reprezentate sub
form de obiecte.
obiect = date + cod de tratare a acestor date
Programarea obiectual ofer posibiliti de modelare a
obiectelor, a proprietilor i a relaiilor dintre ele, dar i
posibilitatea de a descompune o problem n componentele
sale (soft mai mentenabil, adaptabil, reciclabil).
Exemple: SIMULA(1965), SIMULA-2(1967), Smalltalk, C+
+, Java

ABSTRACTIZAREA DATELOR
Obiectele sunt componente software care modeleaz fenomene
din lumea real.
n general, un fenomen implic tipuri diferite de obiecte.
Obiectele care reprezint aceeai idee sau concept sunt de
acelai tip i pot fi grupate n clase (concrete sau abstracte).
Clasele implementeaz tipuri de date, deci i operatorii destinai
manipulrii acestora:
Clas = Date + Operaii.
O clas se caracterizeaz prin: numele clasei, atribute, funcii i
relaii cu alte clase.

ABSTRACTIZAREA DATELOR
Instana este un obiect dintr-o clas i are proprietile definite de clas.
Pentru o clas definit, se pot crea mai multe instane ale acesteia.
Toate obiectele au o stare i un comportament.
Starea unui obiect se refer la elementele de date coninute n obiect i la
valorile asociate acestora (datele membre).
Comportamentul unui obiect este determinat de care aciunile pe care
obiectul poate s le execute (metodele).
Atributele specificate n definiia unei clase descriu valoric proprietile
obiectelor din clas, sub diferite aspecte. Cele mai multe limbaje orientate
obiect fac urmtoarea distincie ntre atribute:
atribute ale clasei (au aceeai valoare pentru toate instanele clasei);
atribute ale instanei (variaz de la o instan la alta, fiecare instan avnd
propria copie a atributului).
n limbajul C++ atributele se numesc date membre.

ABSTRACTIZAREA DATELOR
Metode (funcii membre). La definirea unei clase se definesc i metodele
acesteia (numite i funcii membre).
Fiecare obiect are acces la un set de funcii care descriu operaiile care pot fi
executate asupra lui.
Metodele pot fi folosite de instanele clasei respective, dar i de instanele
altor clase (prin mecanismul motenirii).
Clasa conine att structurile de date necesare descrierii unui obiect, ct i
metodele care pot fi aplicate obiectului.
La crearea unui obiect, alocarea memoriei se poate fi face static sau dinamic
(cu ajutorul unor funcii membre speciale, numite constructori).
Eliberarea memoriei se realizeaz cu ajutorul unor funcii membre speciale,
numite destructori, n momentul ncheierii existenei obiectului respectiv.

MOTENIREA
Motenirea este o caracteristic a limbajelor de programare orientate obiect,
care permite refolosirea codului i extinderea funcionalitii claselor
existente.
Procesul implic la nceput definirea clasei de baz care stabilete calitile
comune ale tuturor obiectelor ce vor deriva din baz (ierarhic superioar).
Prin motenire, un obiect poate prelua proprietile obiectelor din clasa de
baz.
Clasa A reprezint clasa de baz (este o generalizare) i
conine informaiile comune (disponibile prin motenire i
subclaselor acesteia).
Clasa B reprezint clasa derivat (este o particularizare, o
specializare a clasei A) care extinde funcionalitatea clasei
de baz i conine informaiile specifice.
B este clas, iar A este o superclas a clasei B.

MOTENIREA
Motenirea poate fi: unic sau multipl.
n cazul motenirii unice, fiecare clas are doar o superclas.
Exist dou modaliti de specializare a unei clase de baz:
introducerea de extra-atribute i extra-metode n clasa derivat
(particulare doar clasei derivate);
redefinirea membrilor n clase derivate (polimorfism).
Prin motenire, un obiect poate prelua proprietile obiectelor din clasa de
baz.
A

MOTENIREA
n situaia motenirii multiple, o clas are mai multe superclase.
Motenirea multipl este util, dar poate crea ambiguiti .

NCAPSULAREA (ASCUNDEREA) INFORMAIEI


ncapsularea (ascunderea) informaiei reflect faptul c atributele instan i
metodele unui obiect l definesc doar pe acesta.
Metodele i atributele unui obiect sunt private, ncapsulate n obiect.
Atributele de clas nu sunt ncapsulate, fiind partajate ntre toate instanele
clasei.
n limbajul C++ ncapsularea poate fi forat prin controlul accesului,
deoarece toate datele i funciile membre sunt caracterizate printr-un nivel de
acces.
Nivelul de acces la membrii unei clase poate fi:
private: membrii (date i metode) la care accesul este private pot fi accesai
doar prin metodele clasei (nivel acces implicit);
protected: aceti membri pot fi accesai prin funciile membre ale clasei i
funciile membre ale clasei derivate;
public: membrii la care accesul este public pot fi accesai din orice punct al
domeniului de existen a clasei respective;
friend: aceti membri pot fi accesai prin funciile membre ale funciei
prietene specificate.

COMUNICAREA NTRE OBIECTE


n limbajele de programare orientate obiect, obiectele
comunic ntre ele prin mesaje, ceea ce conduce la
accentuarea conceptului de ncapsulare.
Un obiect poate stimula un altul s activeze (declaneze) o
metod, trimindu-i un mesaj. Dup primirea mesajului,
metoda respectiv este apelat cu parametrii furnizai,
asigurnd comportarea corespunztoare a obiectelor.
Metodele sunt invocate prin trimiterea de mesaje.
n limbajul C++ funciile membre (metodele) sunt accesate
n mod similar oricarei funcii, cu deosebirea c este necesar
specificarea obiectului cruia i corespunde metoda.

PSEUDOVARIABILE

Limbajele de programare orientate obiect posed dou


variabile (numite pseudo-variabile) care difer de variabilele
normale prin faptul c nu li se pot atribui valori n mod direct,
de ctre programator.
n general, pseudovariabilele sunt o form scurt pentru
obiectul curent i pentru clasa printe a obiectului
curent.
n limbajul C++ exist doar una din aceste pseudovariabile,
numit this (pointer ctre obiectul curent).

METACLASELE
Metaclasele reprezint clase de clase.
O clas este, de fapt, o instan a unei metaclase.
Diferenele dintre clase i metaclase sunt:
Clasa definete caracteristici (atribute i metode) ale
instanelor de acel tip. Metodele pot fi folosite doar de obiectele
clasei, nu i de nsi clasa (restricie).
Metaclasele furnizeaz un mijloc prin care variabilele clas
pot fi implementate: n unele limbaje OOP, variabilele clas sunt
instanieri ale unei metaclase.
Limbajul C++ nu include explicit metaclasele, dar suport
variabilele clas sub forma datelor statice.

SUPRANCARCAREA OPERATORILOR
Suprancrcarea (supradefinirea, overloading) operatorilor
permite atribuirea de noi semnificaii operatorilor uzuali
(operatorilor intlnii pentru tipurile de date predefinite).
Limbajul C++ furnizeaz modaliti de suprancarcare a
operatorilor (overloading): acelai operator are semnificaii
diferite, care depind de numrul i tipul argumentelor.

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