Sunteți pe pagina 1din 5

Prof. univ. dr. mat. Alexandru A.

Popovici
8 PROGRAMAREA ORIENTATĂ SPRE OBIECTE (POO) ŞI LIMBAJUL UML

8.1 Principii fundamentale ale POO


Metode de programare — datorate complexităţii programelor şi necesităţii „standardizării” compon.
Programarea modulară: — împărţirea descendentă a programelor în părţi logice (module), programarea
succesivă a fiecărei părţi şi combinarea ascendentă a modulelor; ⇒ progr. principal + ierarhie de module.
Programarea orientată spre componente — producerea unor subunităţi de programe interschimbabile
şi combinabile, parametrizabile contextual (în raport de platforme de calcul, programe şi utilizatori).
Programarea condusă de evenimente — executarea părţilor programului într-o ordine determinată, în
momentul execuţiei programului, de evenimente (schimbări ale stării programului, comunicate prin mesaje).
Programarea obiectuală: — împărţirea programelor în obiecte (module din date şi prelucrări); gruparea
obiectelor în clase (prin tipuri de date) şi ierarhii de clase înrudite (cu moştenire); precum şi comunicarea
obiectelor prin mesaje (determinate de evenimente);
— programarea bazată pe obiecte (nu include moştenirea) / orientată spre obiecte (include moştenirea).
Obiecte — modele ale unor entităţi conceptuale sau reale persistente, cu implementări informatice volatile.
Construirea empirică a obiectelor: 1) identific. substantivelor principale în descrierea verbală a sistemului;
2) transformarea substantivelor în clase; 3) discutarea claselor cu experţii (pt. stabilirea proprietăţilor);
4) prototiparea (implementarea rapidă) a claselor, cu ajutorul unui limbaj de programare.
Răspunsuri la obiecţii: a) extinderea limbajelor procedurale (Pascal, C) prin capacităţi obiectuale;
b) gruparea obiectelor şi claselor (fără relaţii ierarhice) în colecţii;
c) crearea bibliotecilor de tipuri standard refolosibile, a limbajelor persistente şi a bazelor de date obiectuale,
d) utilizarea furnizorilor de obiecte şi a programelor de intermediere (în calculul distribuit);
e) construirea metodologiilor sistematice de proiectare obiectuală a sistemelor.

8.2 Terminologia OMG pentru obiecte


OMG (Object Management Group) organizaţie non-profit deschisă (1989); produce şi întreţine
specificaţii pentru aplicaţii informatice bazate pe obiecte şi independente de platforma de implementare.
Obiect — entitate informatică, identificată printr-un nume (identificatorul obiectului, OID); posedă
atribute şi execută acţiuni prin metode specifice. Atributele + metodele = proprietăţile obiectului.
Atribut — descris prin nume şi valori posibile. Metodă — procedură de prelucrare a valorilor atributelor
(subrutină de program cu un nume, parametri şi implementare).
Starea obiectului — mulţimea ordonată a valorilor atributelor lui. Comportamentul obiectului — modul
lui de reacţionare, printr-o schimbare a stării, la apariţia unor evenimente (declanşatori).
Identitatea obiectului — invariantă la schimbarea stării. Echivalenţa obiectelor: a) identitate (acelaşi
identificator), b) egalitate (aceeaşi structură), c) asemănare (aceeaşi stare).
Mesaje — evenimente (cu nume şi parametri cu valori) ce conţin informaţii de comunicare între obiecte.
Interfaţa obiectului — submulţimea metodelor care reacţionează la evenimentele externe.
Ex. 8.1 Arhitectura model-perspectivă-controlor (MVC) — 3 obiecte: modelul (stările unei aplicaţii),
perspectiva (prezintă o interfaţă pentru aplicaţie, conformă stării acesteia), controlorul (comandă ansamblul
interacţiunii). Funcţionare: 1) utilizatorul interacţionează cu interfaţa iniţială a aplicaţiei (generând un
eveniment), 2) controlorul pune la dispoziţia utilizatorului interfaţa furnizată de perspectivă, traduce
evenimentul (venit de la interfaţă) într-o formă inteligibilă aplicaţiei şi îl transmite Controlor
modelului (a cărui stare se schimbă în mod corespunzător), 3) perspectiva
interoghează noua stare a modelului, generând o interfaţă adecvată (ce îşi procură
datele de la model) şi o trimite controlorului. Perspectivă Model

Încapsulare — proprietatea obiectelor de a-şi ascunde anumite atribute şi metode.


Obiecte asociate: — obiect agregat (format prin folosirea în comun a obiectelor componente,
reprezentabil printr-o reţea generală);
— obiect compus (format din obiecte folosite în mod exclusiv; reprezentabil prin graf arborescent).
Obiectele asemănătoare — grupate într-o clasă, descrise prin tipul ei (ansamblul abstract al atributelor şi
metodelor comune). ⇒ Obiectele — instanţe ale clasei (concretizări ale tipului).
Generalizare — construcţia ascendentă şi recursivă a claselor şi tipurilor; ⇒ subclase (subtipuri) ale
supraclasei (supratipului), ca în modelul entitate-legătură extins (MELE).
1
Supratip B al tipului A (subtip A al lui B) ⇒ interfaţa lui B este o submulţime a interfeţei lui A.
Particularizare (specificare) — construcţia descendentă a subclaselor (subtipurilor), pornind de la
supraclase (supratipuri).
Operaţii (funcţii) — descriu ce (nu cum) face clasa (adică ce servicii oferă ea).
Semnătura operaţiei (o defineşte unic în context) — numele + lista parametrilor+ tipul rezultatului.
Proprietăţi (atrib./oper.) ale obiectelor încapsulate dintr-o clasă: a) publice (vizibile şi utilizabile din afara
clasei), b) private (invizibile şi inutilizabile din afara clasei), c) protejate (vizibile doar pentru subclasele clasei).
Clase: a) concrete (cu obiecte ca instanţe), b) abstracte (fără obiecte ca instanţe şi metode ca implementări).
Moştenire: — capacitatea subtipurilor de a prelua implicit toate proprietăţile unui supratip;
— simplă (există un singur supratip) sau multiplă (există mai multe supratipuri);
— completă (toate subtipurile posibile au fost specificate) sau incompletă (fără toate subtipurile).
La subtipuri se pot adăuga alte proprietăţi specifice; la obiecte se pot rescrie unele operaţii
Polimorfism — proprietatea unui subtip de a avea mai multe supratipuri (şi mai multe interfeţe).
Colecţie — grupare de obiecte („membri”) nu neapărat asemănătore; gestionată de utilizatori.
Structurile fundamentale pt. tipuri şi subtipuri — arborescenţele şi reţelele.

8.3 Limbajul unificat de modelare a obiectelor (UML)


8.3.1 Cadrul de dezvoltare al UML: MDA, MOF, OCL, QVT şi XMI
Ingineria condusă de modele (MDI) — metodă de construcţie a programelor pornind de al modelul
domeniului de aplicaţie (nu de la algoritmii de calcul).
a) Arhitectura condusă de modele (MDA) —ansamblu de recomandări pt. construirea aplicaţiilor
independente de platformă (SO şi echipamente), pe 5 nivele de modelare (indep./dep. de calcule, platformă şi
limbaj), cu perspective + reprezentări grafice specifice (în UML sau limbaje înrudite).
b) Facilitatea meta-obiectelor (MOF) — limbaj abstract, pt. definirea diverselor limbaje de modelare.
MOF: — ansamblu complet (CMOF), nucleu esenţial (EMOF),
— 4 nivele de abstracţie pt. modele: a) M3— meta-meta (limbaje de descriere),
b) M2 — meta (descrieri de limbaje),
c) M1 — modele propriu-zise (limbaje de modelare),
d) M0 — date (descrieri de obiecte reale).
Meta-modelul UML: — elementele principale (elemente+diagrame),
— elemente secundare (ornamente, comentarii, specificaţii)
— extinderi prin profiluri: stereotipuri (« »), valori etichetate (proprietate +valoare) şi restricţii.
c) Limbajul pentru restricţii obiectuale (OCL) — textual declarativ, cu expresii de interogare şi navigare
(pt. restricţii şi obiecte MOF) şi instrucţiuni (context + proprietate + operaţie + cuvinte rezervate).
d) Interogări, perspective şi transformări reciproce (QVT) — standard (generalizarea lui OCL 2.0) pt.
transformarea unui model M 1 (descris prin meta-modelul MM 1 ) într-un model M 2 (descris prin meta-
modelul MM 2 ), toate conforme cu MOF 2.0.
e) Schimbul de metadate prin XML (XMI) — standard pt. schimbul de informaţii între programe,
conţinând metadate reprezentabile în MOF (XML — limbaj de descriere a datelor din doc. parţial structurate).
8.3.2 Reprezentarea claselor şi obiectelor în UML (Unified Modeling Language)
UML — limbaj de modelare grafică a obiectelor, prin elemente de modelare, diagrame şi perspective
(Booch, Rumbaugh, Jacobson, 1997); 1.0 (OMG, 1998), 1.4 (ISO, 2005), UML 2.0 (2003).
Elemente de modelare — pt. construcţia diagramelor (ex.: obiect, clasă, pachet, componentă, mesaj, stare).
Diagrame — reprezentări grafice complexe (pt. descrierea perspectivelor):
— funcţionale (logice — pt. cazuri de utilizare, fizice — pt. desfăşurare, componente, structuri compozite);
— static-structurale (pt. clase şi obiecte);
— dinamic-interactive (pt. maşini cu stări, interacţiuni şi activităţi).
Diagrame pt. cazuri de utilizare — „actorii” externi şi legăturile cu cazurile de utilizare furnizate de sistem.
Diagramele de clase — structurile claselor şi legăturile lor (asociere, generalizare, dependenţă,
abstractizare-realizare), reprezentate prin segmente cu sau fără elemente terminale.
Categorii speciale de clase: şabloane, interfeţe, semnale.
Grupări de clase/obiecte: — pachete (cu elemente heterogene),
— mulţimi de generalizare (cu modalităţi comune de moştenire),
— tipuri de putere (cu o proprietate comună).
2
Diagramele de obiecte — instanţele obiectuale ale claselor, împreună cu legăturile lor.
Diagramele de maşini cu stări —stările obiectelelor şi evenimentele ce pot determina schimbarea stării.
Diagramele de activităţi —secvenţele de acţiuni ale activităţilor, cu mesajele/obiectele trimise/primite.
Diagramele de interacţiuni — interacţiunile dintre obiecte, în timpul execuţiei programelor.
Diagramele de componente — structura fizică a programelor (componente şi legăturile lor).
Diagramele de desfăşurare — arhitectura fizică a echipamentelor şi a programelor din sistem.
Diagramele de structuri compozite — elementele ce participă la sistem şi relaţiile lor.
Noutăţi în UML 2: — porturi (pt. conectarea clase-interfeţe), mulţimi de generalizare, tipuri de putere,
diagrame de structuri compozite şi de interacţiune;
— posibilitatea utilizării modelelor ierarhice multinivel, prin detalii şi descompuneri pe nivele.

Obiect Clasă

Atribute Atribute Stare / activitate

Metode Operaţii

Legătură

Caz de utilizare Nod


Nume de interfaţă

<< componentă >>


Comentariu Pachet
Componentă

Perspective: — pot fi cuprinse, în totalitate sau în parte, în fiecare din nivelele de modelare din MDA;
— nivele de modelare a sistemelor, construite cu ajutorul diagramelor:
a) perspectiva cazului de utilizare — percepţia funcţionalităţii sistemului de către „actorii” externi;
b) perspectiva logicii — proiectarea funcţionalităţii în interiorul sist., prin structura şi comportarea statică;
c) perspectiva implementării — organizarea programelor la nivel de limbaj de progr. şi cod executabil;
d) perspectiva proceselor — elementele principale ale sist., în raport de procesele şi firele de execuţie;
e) perspectiva desfăşurării — implementarea sistemului într-o arhitectură fizică concretă.
Caz de utilizare

Logică Implementare

Sistem
informatic

Proces Desfăşurare

8.3.3 Metamodelul OMG pentru depozite comune de date (CWM)


— std. OMG; colecţie ierarhizată de sub-metamodele, pt. repertoriile de metadate ale depozitelor:
1) fundaţia — elementele structurale de bază (tipuri de date, proiecţii ale tipurilor, chei de acces şi
indecşi, expresii, informaţii economice, desfăşurări ale programelor);
2) resursa — sursele operaţionale ale datelor (BD relaţionale, fişiere de înregistrări, matrici
multidimensionale, documente XML);
3) analiza — serviciile de analiză a informaţiei (transformările, OLAP, nomenclatură economică,
mineritul datelor, vizualizarea informaţiei);
4) gestiunea — metode de înmagazinare (procese şi operaţii).
Fiecare metaclasă din CWM depinde (direct sau indirect) de o metaclasă din UML.
CWM permite comunicarea între diverse unelte informatice (folosite la înmagazinarea datelor),
CWM 1.1 — cu un set de structuri de schimb reciproc al metadatelor (MIP).

3
8.4 Modelul COM al obiectelor sub Windows
8.4.1 Structura şi crearea obiectelor COM
Modelele Microsoft pt. obiecte:
a) COM (Component Object Model): —model al componentelor obiectuale pt. ansambluri locale de
programe sub Windows,
— asistat de MFC (Microsoft Foundation Classes), bibliotecă formată din colecţii de ierarhii de clase de
obiecte pentru interfeţe, şi de WTL (Windows Template Library), încapsulare prin obiecte a bibliotecilor C++;
b) COM+, DCOM (Distributed COM) — extinderi ale lui COM (+ protocol) pentru Windows la distanţă;
c) .NET — noua tehnologie de programare, noul DCOM, noua bibliotecă de tipuri, indep. de platformă.
Vocabular Microsoft-POO: interfeţe COM — colecţii de funcţii apelabile (biblioteci cu legături
dinamice, DLL-uri); clase COM — entităţi cu 1-n interfeţe; obiecte COM — colecţii de apeluri la funcţii
(instanţieri ale claselor COM corespunzătoare).
Interfaţa COM — implementată ca un set de adresări (pointeri) la o tabelă virtuală. Etape de construire:
1) scriere ca text (în limbajul de definire a interfeţelor, IDL), cu un identificator unic global (GUID);
2) compilare de MIDL ⇒ bibliotecă de tipuri (fişier binar, .TLB);
3) compilare (de ex., cu Visual C++, Visual Basic) ⇒ bibliotecă .DLL executabilă;
4) înregistrare în fişierul registrului Windows (Windows Registry), pt. folosirea de către clienţii COM.
Critici: — posibilitatea referinţelor circulare între obiecte, blocarea RAM (de obiectele rămase nefolosite);
— imposibilitatea înregistrării mai multor versiuni ce componente (pt. programe diferite).
Compilare
Compilare cu compilator Înregistrare
Scriere cu MIDL VC++/VB GUID

Descrierea Bibliotecă Modul de Registrul


interfeţei de tipuri bibliotecă Windows
(.TLB) (.DLL)
Limbaj simbolic Format binar Format
(text IDL) executabil

8.4.2 Biblioteci COM pentru prelucrarea stocărilor de date (MS ODBC, OLE DB, MS Jet, DAO)
MS ODBC — implementare a standardului ODBC (modelul obiectelor ca în DAO).
OLE DB — specificaţie pt. realizarea unor interfeţe de programare a aplicaţiilor (API-uri) mai puternice
decât ODBC, cu accesul la baze de date ierarhice, la fişierele de text sau cu foi de calcul ş.a.
Furnizorii de biblioteci OLE DB realizează implementările (pot lărgi posibilităţile SGBD-urilor accesate).
MS Jet (Joint Engine Technology, MS Jet Database Engine):
— motor (interfaţă interioară) pt. MS Access şi baze de date ISAM;
— înlocuit de Access Engine (cu. DAO 12.0), în Access 2007.
DAO (Data Access Objects) — pt. acces la stocările de date, prin conectări, interogări, proceduri stocate,
tranzacţii şi prelucrări ale rezultatelor. DAO 3.6 — înlocuit cu biblioteci de obiecte ActiveX; livrare
reluată ca DAO 12.0 (cu Access 2007). Modelul obiectelor din DAO 3.6 — ierarhie de colecţii de obiecte:
a) DBEngine — motorul bazei de date,
Aplicaţie
b) Workspaces — sesiuni active cu DBEngine,
c) Errors — erori în executarea lui DBEngine, DAO
d) Users — conturile utilizatorilor individuali,
e) Groups — conturile grupurilor de utilizatori, MS Jet
f) Databases — baze de date deschise.
g) TabeleDefs — tabele deschise şi memorate în BD, MS ODBC OLE DB
h) QueryDefs — interogări deschise şi memorate în BD,
i) Recorsets — mulţimi de înregistrări obţinute prin interogări,
j) Relations — legături definite între tabele sau mulţimi de întregistrări;
k) Containers — obiecte cu informaţii despre alte obiecte,
l) Indexes — fişiere de chei ale unor tabele,
m) Documents — obiecte cu informaţii ds. alte obiecte individuale,
n) Parameters — parametri ai interogărilor (primesc valori doar în momentul executării interogărilor),
o) Fields — câmpuri de date din tabele, seturi de înregistrări, legături sau indexuri.
4
DAO 12.0 — unele atribute şi metode ale lui DBEngine, Workspace şi Container sunt ascunse; 3 noi obiecte:
p) ComplexType — cîmp cu mai multe valori (transformate automat în tabele virtuale), cu Fields proprii;
q) Field2 — câmp cu noi atribute faţă de Field vechi;
r) Recordset2 — mulţime de înregistrări, cu un nou atribut în plus faţă de vechiul Recordset.
MS Jet — acelaşi model al obiectelor ca DAO; MS ODBC — cu următoarele diferenţe:
— un obiect Workspace constă doar din mai multe obiecte ODBC de conectare;
— un obiect Database constă doar din mai multe obiecte ODBC Recordset.
DBEngine

Workspaces

Databases

TableDefs

Fields

Indexes

Fields

QueryDefs

Fields

Parameters

Recordsets

Fields

Containers

Documents

Relations

Fields

Users

Groups

Groups

Users

Errors