Documente Academic
Documente Profesional
Documente Cultură
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 .
PSEUDOVARIABILE
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.