Documente Academic
Documente Profesional
Documente Cultură
Capitol 7
Baze de date orientate obiect
(BDOO)
7.1. Conceptul de BDOO
Pentru definirea unei BDOO vom pleca tot de la definirea unei baze de date la
modul general, i anume:
O baz de date orientat obiect este format dintr-una sau mai multe clase de
obiecte cu asocierile dintre acestea.
Ca i n alte tipuri de baze de date, o BDOO dispune de o schem i instane ale
acestuia.
Schema BDOO conine specificaiile fiecrei clase de obiecte ce pot fi stocate n
baza de date. Pentru fiecare clas C, aceasta include:
- tipul asociat clasei C. Acest tip determin structura fiecrui obiect al clasei C;
- semntura metodelor din cadrul clasei C, care precizeaz denumirea metodei,
tipul i ordinea argumentelor permise metodei i tipul rezultatului oferit de acea
metod;
- relaiile subclaselor care permit identificarea superclasei a lui C;
- restriciile de integritate i restriciile refereniale, sau mai mult afirmaii generale
care sunt similare constrngerilor din modelul bazelor de date relaionale.
O instan a unei BDOO este un set de obiecte pentru multitudinea claselor
specificate n cadrul schemei bazei de date.
Capitol 7
a sistemelor de gestiune a bazelor de date nu i-au gsit o utilizare extins pentru aplicaii
complexe sau pentru cele ce implicau volume mari de date. Acest lucru s-a datorat
faptului c nc nu existau Metode, tehnici i metodologii de analiz i proiectare
orientate obiect a sistemelor informatice. Acestea au aprut n jurul anilor 1990 i dintre
ele enumerm:
- Object Oriented Design (OOD), elaborat de Grady Booch, este o metodologie
similar metodologiei OMT, dezvolt aceeai idee analiza i proiectare iterativ
insistnd asupra prii de proiectare [BDOOC94];
- Object Oriented Analysis (OOA) elaborat de Peter Coad i Edward Yourdon;
- Object Oriented Structured Design (OOSD) elaborat de Wasserman;
- Object Oriented System Analysis (OOSA) este o metodologie de proiectare a
sistemelor n timp real propus de Sally Shaler i Steven Mellor. Autorii au
continuat s mbunteasc aceast metodologie, publicnd chiar i o lucrare
despre cum se pot utiliza notaiile UML n cadrul metologiei Shaler/Mellor;
- Responsability Driven Design (RDD), aparinnd lui Wirfs - Brock, Wilkesson i
Wienner;
- Object Oriented Role Analysis, Synthesis and Structuring aparinnd lui Reens
Kaugh;
- Object Oriented Systems Analysis (OOSA) aparinnd lui Embley;
- Object Modeling Techinque (OMT) elaborat de James Rumbaugh, Michael
Blaha i alii, prezentat n lucrarea [RUMB94]. Metodologia a fost iniial
utilizat de General Electric and Development Center;
- Object Oriented Software Engineering (OOSE) conceput de Ivar Jacobson.
n plus, multe organizaii i-au dezvoltat propria metodologie intern, utiliznd
diagrame i tehnici din diverse surse. Exemple de astfel de metodologii sunt Catalyst
creat de Computer Sciences Corporation (CSC) i Worldwide Solution Design and
Delivery Method (WSDDM), creat de IBM. Aceste metodologii difer, dar n general
combin analiza fluxurilor, identificarea cerinelor, modelarea proceselor de afaceri i
modelarea obiectual utiliznd diverse notaii (OMT, Booch etc.) i uneori includ tehnici
adiionale specifice modelrii orientate obiect, cum ar fi fiele CRC sau cazurile de
utilizare.
Toate aceste metodologii prezentau o serie de limite precum i multiple
diferenieri de simboluri, notaii sau tipuri de diagrame. Aceste aspecte generau dificulti
n privina nelegerii, prelurii i folosirii lor de diferite grupuri de utilizatori, n crearea
de noi sisteme sau n procesul de mentenan a sistemelor. Mare parte dintre aceste
deosebiri au fost nlturate n 1997 prin elaborarea unui standard cu privire la simboluri,
notaii, tipuri de diagrame, tipuri de modele etc., numit UML (Unified Modeling
Language).
Majoritatea corporaiilor au adoptat UML ca notaii pentru propria lor
metodologie. Unii utilizeaz doar un subset al UML-ului pentru a modela ceea ce i
intereseaz, de exemplu, doar diagrama claselor sau doar cazurile de utilizare. Alii au
preluat ntreg setul UML, utiliznd inclusiv diagramele de stare i de activitate pentru a
modela sisteme n timp real i diagrama de implementare pentru a modela sisteme
distribuite.
122
Capitol 7
restructurarea poriunilor existente ale bazei de date. Aa dup cum s-a mai artat,
n acest mod activitatea de programare se transform ntr-o activitate de
programare doar a diferenelor, sporind productivitatea muncii. Se are n atenie
valorificarea proprietii de motenire prin definirea, sau prin generalizarea, de
superclase de obiecte cu includerea n aceasta a tot ceea ce este comun, iar apoi
partajarea acestora n subclase de obiecte n care vor fi precizate doar elementele
prin care se difereniaz fiecare subclas de celelalte subclase de obiecte. Efectele
benefice rezultate dintr-o astfel de abordare constau n reutilizarea codului,
reducerea redundanei datelor din baza de date, ntreinerea facil a bazei de date,
uurin n dezvoltarea i implementarea de noi aplicaii etc.
-
Reflect mai bine realitile din mediul nconjurtor. Lumea real nu este format
dintr-o colecie de tabele, ci un model a lumii reale apare ca o ierarhie de
ansambluri concretizate n articole de prelucrat. Aici o parte e descompus n
prile ei constituente ca subpri, care la rndul lor sunt descompuse n alte
subpri mai mici. Astfel de structuri sunt greu de reprezentat i manipulat
utiliznd tabele. De fapt prin folosirea unui SQL standard, toate subprile unei
pri date nu pot fi determinate tipic cu o singur instruciune de cereri. n
contrast, o baz de date orientat obiect suport capacitatea obiectelor de a se
referi direct unele la altele ct i facilitatea de calcul a limbajelor orientate obiect
de a procesa obiecte.
Totodat, un model de ntreprindere ar trebui s fie un model ce descrie tipuri de
obiecte, de afaceri, subtipuri, comportarea lor, relaiile dintre obiecte, strile
obiectelor, evenimentele ce determin schimbrile de stri, reguli de afaceri etc.
Modelul ntreprinderii trebuie translatat direct n software care face ca
ntreprinderea s funcioneze. O astfel de situaie necesit baze de date care
stocheaz obiecte i fac metodele asociate s fie operative.
124
n general, se poate spune c BDOO ofer o mai bun performan atunci cnd
avem de a face cu obiecte complexe i relaii complexe, deoarece nu este nevoie s
spargem obiectele mari n tabele normalizate i apoi s le reasamblm n momentul
execuiei programelor de aplicaii.
Dezavantajele BDOO. n ciuda unor multiple avantaje pe care le ofer BDOO
totui acestea nc nu au reuit s se impun sub aspectul ponderii implementrii lor n
diferite domenii de aplicabilitate. Acest lucru se datoreaz unor dezavantaje ale lor, dintre
care enumerm:
- Lipsa unor standarde ale arhitecturii de SGBDOO, de modelare a datelor sau de
limbaje de integrare standard orientate obiect. Exist totui preocupri i chiar
anumite realizri de standardizare pe domeniile amintite, n mare parte aparinnd
grupului de administrare a bazelor de date orientate obiect (ODMG).
- SGBDOO nu ofer o gam larg de instrumente (TOOLS) utilizatorilor firmei sau
proiectanilor de dezvoltri i ntreineri de aplicaii, comparativ cu SGBDR.
- SGBDOO nu ofer suficient siguran n ceea ce privete rezolvarea problemelor
de acces concurent n condiiile lucrului cu volume mari de date.
- Nu sunt rezolvate n suficient msur problemele referitoare la asigurarea
integritii bazei de date sub aspectul refacerii acesteia n caz de incident.
- ncapsularea poate genera dificulti sub aspectul optimizrii integrrii bazei de
date. Felul n care sunt definite i stocate datele i metodele precum i limitele
Limbajelor de interogare orientate obiect pot influena n sens negativ
performanele de ordin fizic ale bazei de date. Acelai lucru poate s apar i n
situaia n care avem de a face cu anumite cerine informaionale care nu au fost
prestabilite. Cu alte cuvinte, apare ntrebarea: Cum pot fi cutate i regsite
anumite obiecte a cror structur este ncapsulat (ascuns), dac o astfel de
cerin nu a fost prevzut nc din faza de proiectare. Remarcm faptul c unele
SGBDOO de dat mai recent accept interogrile de tip AD-HOC ns, acest
125
Capitol 7
lucru l realizeaz prin distrugerea ncapsulrii sau prin impunerea unor limite
privind interogrile posibile.
Lipsa de experien n domeniu, comparativ cu experien dobndit n sistemele
tradiionale. Aceast lips de experien poate fi datorat cel puin de urmtorii
factori:
este un domeniu mai nou de preocupare;
SGBDOO prin componentelor lor sunt mai mult orientate spre
programatori dect spre utilizatorii finali neinformaticieni;
se simte o trecere abrupt de la sistemele tradiionale la cele orientate
obiect, iar, nelegerea i nsuirea noului mod de abordare impune eforturi
sporite din partea proiectanilor i utilizatorilor. Acest aspect genereaz o
oarecare rezisten n acceptarea tehnologiei orientate obiect.
126
Nu exist
Nu exist
Cheie primar
Capitol 7
folosite pentru analiz, proiectare,
programare i accesul bazei de date sunt
similare. Conceptele aplicatiilor sunt in mod
direct reprezentate prin clasele de obiecte.
128
Capitol 7
-
130
131
Capitol 7
complex, Automobil poate fi privit ca un obiect format dintr-o serie de componente
care la rndul lor sunt privite ca obiecte, de forma (figura 7.1).
Gruparea obiectelor n cele dou categorii prezint interes cel puin sub aspectul
manipulrii obiectului coninut. Un obiect coninut poate fi manipulat n dou moduri.
ntr-un prim mod, obiectul coninut poate fi ncapsulat n obiectul complex i astfel
formeaz o parte a acestuia. ntr-o astfel de situaie, structura obiectului coninut
reprezint o parte a structurii obiectului complex, iar obiectul coninut poate fi accesat
numai cu metodele obiectului complex. n al doilea mod, un obiect coninut poate fi
considerat ca avnd o existen independent de cea a obiectului complex. n acest caz, n
obiectul printe nu este stocat direct obiectul membru, ci doar identificatorul su OID.
Obiectul coninut are structura i metodele lui proprii i poate fi deinut de diverse obiecte
printe.
AUTOMOBIL
ROI
MOTOR
PISTOANE
CILINDRII
ASIU
BUJII
132
1,
are
1.1
apartine de
DEPARTAMENT:
133
SALARIAT
Capitol 7
Denumire: STRING;
Cod - dep: INTEGER;
ef - dep: SALARIAT;
Nr. telefoane: SET [STRING];
Angajai: LIST [SALARIAT]
SALARIAT:
Marca: INTEGER;
Nume: STRING;
Prenume: STRING;
Profesia: STRING;
Data-naterii: DATE;
Funcia: STRING;
Loc-munc: DEPARTAMENT
Fig. 7.2. Exemple de atribute
Atributele simple pot fi un tip de date atomic, care include tipurile de date clasice
prezente n limbaje de programare, cum ar fi: ntreg real, boolean iruri de caractere. n
exemplul din fig. ., denumire, cod-dep, marca, funcia pot fi considerate ca atribute
simple.
Atributele refereniale sau de asociere, sunt folosite pentru a defini relaii
refereniale ntre obiecte. Ele sunt echivalente pointerilor din limbajele de programare sau
cheilor externe n cazul sistemelor relaionale, ns prezint i diferene importante, astfel:
- Contrar pointerilor, atributele refereniale sunt incoruptibile sau nealterabile, n
sensul c dac obiectul referit a fost ters din baza de date atunci atributul
referenial n mod automat va fi invalidat;
- Contrar cheilor externe, atributele refereniale nu sunt asocieri de valori vizibile
utilizatorilor. n exemplul nostru din figura 7.2., atributele Sef-dep: SALARIAT
i Loc-munc: DEPARTAMENT sunt atribute refereniale.
Atributele colecii fcnd parte din categoria atributelor complexe pot fi la rndul
lor grupate n seturi, liste i tablouri de valori.
Atributele colecii vor conine fie valori ale atributelor simple fie referine.
n exemplul din figura 7.2. Nr.-telefoane este un atribut de tip SET i va conine
multitudinea numerelor de telefon pe care le are un Departament, iar Angajai este un
atribut de tip LIST i va conine ca valori multitudinea identificatorilor OID ale
Salariailor ce lucreaz ntr-un anumit Departament.
Atributele derivate le mai regsim i cu denumirea de atribute de proceduri.
Uneori, n practic, in loc de a stoca n mod explicit valoarea unui atribut, este de preferat
de al determina sau calcula printr-o procedur oarecare i apoi a-l da disponibil i a-l face
cunoscut celor interesai. Pe considerentul c valoarea unui atribut derivat se determin
printr-o metod de tip procedur sau funcie, atributul respectiv mai poart denumirea
de atribut procedur. n exemplul nostru de referin nu apare un atribut derivat, ns ar
putea fi definit unul cu denumirea sugestiv Vrsta salariatului. ntr-o astfel de situaie
Vrsta ar putea fi determinat cunoscnd Data-naterii i apoi prelund data curent de
sistem. Prin diferen se obine vrsta.
134
135
Capitol 7
Din cele constatate se pare c exist o mare majoritate de autori care consider c
tipurile i clasele de obiecte sunt nrudite (legate) ns concepte distincte. Din aceast
categorie amintim civa [Michael Kifer, Pool Alzeni ]
ntr-o baz de date orientat obiect tipurile permit definirea proprietilor
obiectelor, att cele statice (descrierea structurii obiectelor) ct i dinamice (descrierea
comportamentului obiectelor ca metode aplicabile obiectelor). Referitor la partea static a
tipurilor, aceasta este construit utiliznd constructorii de tip i un set larg de tipuri de
date atomice, care includ tipurile de date clasice prezente n limbajele de programare,
cum ar fi: ntreg, real, boolean i iruri. Tipurile de date atomice includ i identificatorii
de obiecte (OID).
Constructorii de tipuri permit definirea tipurilor numii tipuri de date complexe,
care dicteaz structura instanelor (numite obiecte complexe) a unei baze de date obiect.
Reprezentarea unui tip se face conform unei expresii de forma:
[CNP: integer, Nume: String, Nr. telefon: string, copii: PERSOANA]
Aceast definire de tip precizeaz faptul c atributele: CNP accept valori de tip
integer, Nume accept valori din domeniul primitiv string (ir de caractere), Nr.
telefon trebuie s ia valori ce sunt set de iruri de caractere, iar valorile atributului
copii sunt seturi de obiecte ce aparine clasei PERSOANA. Totodat, se poate observa
c expresia anterioar descrie un tip (model) n care structuri complexe pot fi incluse n
interiorul altor structuri. De exemplu, valorile pentru Nr. telefon sunt seturi de valori
primitive, n timp ce valorile pentru copii sunt seturi de obiecte provenite din clasa
PERSOANA.
n mod intuitiv se poate deduce faptul c, tipul unui obiect este tocmai colecia
tipurilor componentelor acestuia. Constructorii tip permit definirea de tipuri numite tipuri
de date complexe, care dicteaz structura instanelor numite obiecte complexe a unei baze
de date obiect. Mai precis, o definire recursiv a tipurilor de date complexe
corespunztoare structurii obiectelor complexe, bazat pe constructori de tip, apare astfel:
- tipuri de baz (valori primitive): ntreg, ir, real i boolean; exemplu: B10XYZ
ar putea fi valoarea asociat atributului numrului de nmatriculare n circulaie a
autovehiculului descris astfel Nr. MAINA: STRING;
- tipuri referin: Numele claselor definite de utilizator, cum ar fi SALARIAI i
ECONIMITI, unde ECONOMITII refer SALARIAII, sau un alt exemplu ar
pute fi de forma unui OID al unui obiect.
- tipuri set i liste: Constructorii de tip SET i LISTE permit definirea de tipuri ale
cror instane sunt colecii de valori (posibil complexe) de acelai tip. Seturile
sunt colecii neordonate ce nu accept duplicri, iar listele sunt colecii ordonate
cu posibile duplicri. Valorile din cadrul setului pot fi de orice tip. n exemplul
anterior au fost ntlnite urmtoarele seturi:
Nr. telefon: string, reprezint un set de iruri de caractere cu
semnificaia c stocheaz multitudinea numerelor de telefoane pe care le
are o persoan, de forma: 040-021-334861, , 040-021-3359211;
Copii: PERSOANA, reprezint un set de obiecte aparinnd clasei
PERSOANA.
136
137
Capitol 7
de nvmnt superior din Romnia, precum i a altor aspecte, necesare elaborrii unor
studii de analiz, prognoze, evaluri comparative etc., diagrama claselor de obiecte ar
putea fi redat astfel (figura 7.3.).
Pe baza diagramei claselor de obiecte, se poate trece la definirea structurii bazei
de date orientate obiect, ns ne vom limita doar la o parte a acesteia, astfel (figura7.4.).
Universitate: racord of (
Denumire:
Nume-rector:
Adresa:
Faculti;
Secii:
Biblioteci:
string,
string,
record of (
Ora: string,
Strada: string,
Nr,: string)
set of (
record of (
Denumire: string
Nume decan: string
Ora: string))
set of (
record of (
Denumire: string
Nr - studeni: string))
set of (
record of (
Corp - cldire: string
Profil: string
Bibliotecari: set of (
record of (
Nume: string
Studii: string))]
138
CITITOR
mprumutat de
0,
1,
gestioneaz
gestionat de
ofer carte
BIBLIOTECAR
1,
are
1,
PROFESOR
1,
angajat la
1,1
BIBLIOTECA
1,
dispune de
1, are
solicit carte
1,
are
1,*
se afl n
1,
aparine de
1,1
1,1 aparine de
dispune de
1,
UNIVERSITATE
este la 1,1
LABORATOR
0,
dispune
de
aparine de
1,1
CATEDRA
coordonate de
1,1
coordoneaz
1,
folosete
folosit de
FACULTATE
1,
1,2
urmat de
urmeaz
1,1
100,
specialist n
SECIE
STUDENT
specializeaz
25,
are 10,
1,* predatla
1, frecventeaz
CURS
frecventat de
25,
Capitol 7
De remarcat faptul c un obiect poate include referiri explicite la un alt obiect, pe
baz de OID (Object Identifications). Incluznd referiri n structura din figura 7.4., noua
definire de tip obiect complex va apare astfel (figura 7.5):
Universitate: record of
(Denumire: string,
Nume-rector: string,
Adresa: record of (
Ora: string,
Strada: string,
Numr: integer),
set of ( Faculti),
set of (Biblioteci))
Faculti:
Biblioteci:
Faculti: record of
(Denumire: string,
Nume-decan: string,
Ora: string
Secii: set of ( Secii))
(Denumire: string,
Nr - studeni: integer),
(corp cldire: string,
Profil: string,
Biblioteci: set of ( Bibliotecari))
(nume: string,
studii: string)
Secii: record of
Biblioteci: record of
Bibliotecari: record of
<OID1,
<OID2,
<OID3,
<OID4,
<OID5,
<OID6,
<OID7,
<OID8,
<OID9,
<OID10,
<OID11,
<OID12,
<OID13,
140
Curs
- Nume
- Data Natere
- Adres
- Telefon
- Cod
- Denumire
- Sala
- Ora
+ schimb-adresa ( )
+ nregistrare la curs ( )
+ nscrierecurs ( )
Ion: Student
Curs
- Nume = Ion
- Data Natere = 23-03-1981
- Adres = Bd. Magheru nr.5
- Telefon =4646306
- Cod = 22
- Denumire = Multimedia
- Sala = 2314
- Ora = 12.00
141
Capitol 7
date relaionale ntr-o baz de date orientat obiect cu ataarea unui OID fiecrui tuplu i
invers.
O clas are un tip, care descrie structura comun a tuturor obiectelor ce fac parte
din aceiai clas, i semnturi de metode, care sunt declaraii de operaii ce pot fi aplicate
clasei de obiecte. De remarcat faptul c numai semnturile metodelor sunt parte a
CODM, implementrile nu sunt. Implementarea unei metode este o procedur scris ntrun limbaj gazd, ce este memorat pe serverul bazei de date.
Multitudinea obiectelor ce aparin unei clase formeaz un set de obiecte i
constituie extensia (extent) clasei. [Michael Kifer, Arthur, Datey].
ntr-un astfel de context, prin analogie, se poate spune c o clas are rolul de
container de obiecte n / din care obiectele n mod dinamic pot fi adugate sau terse.
n limbajele de definire a datelor (DDL) ex. n O2 definirile tipurilor sunt incluse
ca parte a definirilor claselor de obiecte.
n general, definirea unei clase este separat n dou pri, i anume, partea de
interfa i partea de implementare.
- interfaa descrie tipul obiectelor aparinnd clasei, care include semnturilor
tuturor metodelor. Fiecare semntur conine denumirea i tipul fiecrui
parametru a metodei. Parametrii de intrare / ieire n / din metod fac posibil
invocare metodei n cadrul programelor de aplicaii.
- implementarea descrie implementarea metodelor adic, transpunerea operaiilor
ntr-un limbaj de programare.
Interfaa descrie numai operaiile aplicabile asupra obiectelor n timp ce
implementarea ascunde programul corespunztor operaiilor. De remarcat faptul c unele
SGDBOO ofer posibilitatea abaterii de la interpretarea strict a ncapsulrii permind
accesul de date i prin alte forme / interfee i nu numai prin intermediul metodelor, de
exemplu utiliznd limbajul de cereri.
Din cele prezentate se poate desprinde ideea c tipurile sunt abstractizri ce
permit att descrierea proprietilor (strilor) ct i comportamentul, n timp ce clasele
descriu att partea extensional a obiectelor ct i implementarea metodelor referitoare la
un tip. Tipul descrie proprietile abstracte n timp ce clasa descrie implementarea acelor
proprieti abstracte utiliznd structuri de date i programe.
Aa dup cum s-a mai artat i n paragrafele anterioare, unii autori de SGBDOO
sau de cri folosesc cu precdere conceptul de clas, alii conceptul de tip iar alii
utilizeaz ambele concepte, ele fiind nrudite ns distincte. Paolo Atzeni, Stefano Ceri,
Rcardo Torlone, Michael Kifer i Arthur Bernstein, se situeaz pe o astfel de poziie [
], preciznd c:
- tipurile i clasele sunt concepte distincte;
- fiecare clas este asociat la un singur tip;
- conceptul de clas descrie att implementarea ct i extensia unui tip;
- clasele ajut la organizarea obiectelor ntr-o categorie.
n figura 7.9 se sugereaz relaiile ntre clas, tip, obiect, valori, extensie, intensie
etc.
142
Clasa
conine
un set de
Obiecte
are un
extensie
Tip
intensie
au
descriere / atribute
Valori
Capitol 7
De remarcat faptul c n O2 avem de a face, pe de o parte, cu schema bazei de
date, care include definirea proprietilor i metodelor claselor, iar pe de alt parte cu
baza de date propriu-zis ce include datele efective. In acest context prin comanda " add "
se adaug o clas la schema bazei de date, presupus c a fost declarat anterior.
7.6.5. Metode
7.6.5.1. Conceptul de metod i aspecte de ordin general
Aa dup cum s-a mai precizat, multitudinea operaiilor pe care le poate efectua
un obiect sau se efectueaz asupra acelui obiect implementate ntr-un limbaj de
programare poart denumirea de metode.
O metod are o semntur, care descrie parametrii metodei i include toate
informaiile ce permit invocarea acesteia i o implementare, care conine codul metodei
(programul corespunztor metodei), elaborat ntr-un limbaj de programare. Semntura
metodei este o component a definirii clasei de obiecte.
n general, fiecare metod este asociat unei clase specifice de obiecte. n acest
caz, metoda are ca inut (target) o anume clas de obiecte. Exist i sisteme ce permit
definirea de metode multi-int (multi-target), care se aplic la un numr arbitrar de
obiecte fr a favoriza vreunul ntr-un anumit mod. n acest caz, definirea acestora este
dat n mod separat de definirea clasei. Totodat, precizm faptul c fiecare metod are
un numr arbitrar de parametrii de intrare i un singur parametru de ieire.
Metodele corespunztoare operaiilor pe care le implementeaz pot fi grupate
astfel:
- metode constructor (operaii de tip constructor), destinate a crea o nou instan,
un nou obiect al clasei. De exemplu, n cla sa Student putem avea metoda
(operaia) CREAZ-STUDENT care creeaz un nou obiect de tip student i i
iniiaz starea. De remarcat faptul c toate clasele trebuie s aib o metod
constructor;
- metode destructor, folosite pentru tergerea / abandonarea obiectelor i posibil
altor obiecte legate de acestea;
- metode de regsire / accesare folosite numai pentru preluarea valorilor asociate
atributelor obiectului. Exemplu: pentru clasa STUDENT, metoda
CALCULEAZ-VRSTA studentului plecnd de la data naterii sale. O astfel de
metod nu afecteaz starea obiectului;
- metode de actualizare, folosite pentru actualizarea strii obiectului. Exemplu,
metoda posibil schimb adresa din clasa student are menirea de a actualiza /
modifica valoarea atributului adresa.
Metodele mai pot fi clasificate i n funcie de specificul cerinelor de aplicaii,
astfel:
- metode publice, ce reprezint particularitatea c pot fi apelate din oricare program
de aplicaie;
- metode private, ce prezint particularitatea c pot fi apelate numai din interiorul
altor metode ale aceleai clase.
144
CO2
145
Capitol 7
Metoda init face parte face parte din categoria metodelor constructor (de creare)
de clas; ea genereaz partea de stare a unui nou obiect creat n cadrul clasei Universitate.
Structura de definire a semnturii apare astfel:
Method den-metod p1 , p2 , , pn n class den-clasa
unde:
public
private
146
cele dou liste ofer raportul pentru asigurarea comunicrii ntre semntur i
implementare, n sensul c prin listele de parametrii se transfera datele (valorile)
solicitate de metod;
corespondena dintre parametrii pi , i 1,2, , n i d i , i 1,2, , n , se face prin
locul ocupat n lista de parametri i nu prin numerele lor; ntr-o astfel de situaie
denumirile parametrilor pi i d i pot s coincid sau s difere, ns numrul
parametrilor n cele dou liste, precum i tipul lor trebuie s fie acelai.
Necesitatea acestei identiti rezult din faptul c numai parametrilor
pi , i 1,2, , n li se rezerv memorie, parametrii d i utilizeaz aceleai zone de
memorie ca i pi .
Invocarea metodei init, ntr-un program scris n CO2 apare astfel:
execuie CO2
O2 Universitate X;
X = new (Universitate);
[X init (ASE, Roca, Bucureti, Roman, 1)];$
unde:
execute CO2 marcheaz lansarea n execuie a metodei init;
pentru declararea variabilelor locale se folosete cuvntul cheie CO2;
linia a doua de program definete o variabil local cu denumirea X i un tip
Universitate;
linia a treia definete instruciunea de crearea a unui obiect ce aparine clasei
Universitate, invocnd totodat metoda new, metod valabil tuturor claselor
pentru crearea unui nou obiect i inserarea acestuia ntr-o clas corespunztoare;
instruciunea de pe linia final a metodei init aplicat la acel obiect, atribuie valori
iniiale proprietilor obiectului nou creat. Se poate observa c n apelarea metodei
se indic obiectul int i numele metodei, urmat de o list de valori actuale ale
parametrilor de intrare.
La sfritul execuiei metodei, obiectul pentru care metoda nsi este invocat
este returnat ca un parametru de ieire.
De remarcat faptul c n cadrul unei metode poate fi invocat i o alta metod,
existnd astfel posibilitatea de a genera invocri de lanuri de metode, cu precizarea c nu
este permis ca o metod s se invoce pe sine nsi n mod direct sau indirect.
147
Capitol 7
-
Metodele trebuie s fie scurte; ele nu trebuie s depeasc circa dou pagini de
text. Metodele mai lungi este de preferat s fie descompuse;
Metodele trebuie s fie coerente i consecvente n folosirea notatiilor sau unui stil
comun de definire a denumirilor de variabile;
Metodele trebuie s constituie cerine anticipate pentru viitoarele aplicaii i chiar
mai mult dect att, ele nu trebuie s se limiteze la satisfacerea unor cerine
minimale pentru aplicaii curente ci ele vor fi mai largi, de o ntindere mai mare i
vor include cazuri generale.
Metodele vor fi independente. Ele vor folosi informaii definite local sau acceptate
ca parametrii, evitnd folosirea variabilelor globale;
Motenirea va fi folosit ct mai mult posibil. Este de preferat ca metodele s fie
definite n superclase i refolosite n subclase de obiecte.
mesaj
- Data-emiterii: Date
- Emitent: string
- Material: string
.
.
.
proprieti
+ Emite - factura()
+ ncaseaz - factura()
+ ncasare - parial()
+ Calculeaz - factura()
metode
148
7.6.7. Polimorfismul
Polimorfismul presupune faptul c un acelai mesaj poate fi adresat uneia sau mai
multor clase de obiecte primind rspunsuri diferite, cu semnificaii diferite. Exemplu,
presupunem drept mesaj comanda PRINT, din meniul de sistem. Ea va avea ca efect
imprimarea unei figuri geometrice dac se adreseaz unui fiier (prin analogie clase) de
figuri; va imprima un text preselectat dintr-un fiier de tip text etc.
Numeclasa
nume asociere
Numeclas
Capitol 7
Categorie verb
A e parte fizic din
A e fizic coninut n
A e logic coninut n
A e o descriere pentru
A e un rnd dintr-un raport
A este membru a lui
A este o subunitate organizatoric a lui
A este subaltern a lui
A conduce
A comunic cu
A este legat la o tranzacie
A este o tranzacie n legtur cu o alt
tranzacie
A aparine lui
B
B
B
B
B
B
B
B
B
B
B
Exemple de asociere
salcurs
- corpcldire
elev
- clas / sal
sal
- orar
pagin web - pagin web Hotel
articol
- comand
juctor
- echip
atelier
- secie
angajat
- manager
ofer
- main
profesor
- student
pasager
- bilet
rezervare
- anulare
autoturism
- proprietar
1,1
0,1
0,
1,
150
1,1
are
1,1
PRIMAR
Sugereaz faptul c o localitate poate avea unul i numai un singur primar, iar n
sens invers o persoan poate fi primar la una i numai o localitate.
Legtura de tipul unu la zero sau unu. Specificul acestui tip de legtur const
n faptul c o instan din clasa A poate sau nu corespunde unei instane din clasa B.
PERSOANA
1,
este nscris
0,1
PARTID
0,
STUDENT
1,
sunt furnizate de
1,
FURNIZORI
Legtura de tipul muli la muli de mai sus exprim faptul c un material poate
fi livrat de unul sau mai multefurnizori iar un furnizor poate livra unul sau mai multe
materiale.
O multiplicitate de forma (2,5) semnific faptul c la realizarea legturii pot
participa minim 2 i maxim 5 instane dintr-o clas de obiecte. Cnd limita superioar a
intervalului este ,, nseamn c avem de-a face cu o limit superioar infinit.
151
Capitol 7
Varianta 2
B
PERSOANE
0,1
0,1
so
soie
CSTORI
E
Fig. 7.12. Exemplu de asociere unar
Asocierea binar, presupune existena a dou clase de obiecte de forma (figura
7.13):
152
1,
SALARIAT
ANGAJAT IN
1,1
DEPARTAMENT
Nume
asocie
re
Nume clas 2
Nume clas 3
Client
mprum
u-t
Banc
Investiie
153
Capitol 7
Mijloc de
producie
Firm
Proprietar
Utilaj
deine
1,n
Garanie
1,n
Banc
1,
1,
Banc
mprumut
Sum mprumut
Data mprumut
Data rambursare
Dobnda
Rambursare ( )
154
$ Nr.TotalFacturi
Ghieu
deservete
1,n
ordered
Persoan
Capitol 7
multitudinea de obiecte aflate la captul ,,muli al asocierii s se identifice unic un
anumit obiect. Considernd exemplul alctuit din clasele Companie i Angajat, i
asocierea lucreazpentru, vom aveam o relaie ,,unu la muli; o companie are mai muli
angajai i un angajat nu poate lucra dect pentru o singur companie. Calificatorul
numeangajat permite reducerea asocierii ,,unu la muli la o asociere ,,unu la unu,
ntruct o companie i un nume angajat permit identificarea unic a unui angajat (figura
7.21):
COMPANIE
COMPANIE
lucreazpentru
1,n
numeangajat
lucreazpentru
ANGAJAT
ANGAJAT
7.6.9. Motenirea
Motenirea este un mecanism ce d posibilitatea partajrii atributelor i operaiilor
utiliznd relaia de generalizare.Motenirea poate fi redat astfel: (figura 7.22.):
A
B
Fig. 7.22. Motenirea
Motenirea poate fi simpl sau multipl. Motenirea simpl presupune faptul c o
subclas B motenete proprietile i comportamentul doar de la o singur superclas A
(este cazul din figura 7.22.).
Motenirea multipla presupune faptul c o subclas B poate moteni proprietile
i comportamentul de la dou sau mai multe superclase, aa dup cum reiese din figura
7.23.
Se observ c subclasa E motenete proprietile i comportamentul att de la
superclasa A ct i de la B. Clasele constituite special pentru a fi motenite se numesc
clase abstracte i acestea nu au instane, iar numele lor se scrie cu format cursiv (italic ).
O clas construit pentru a crea instane se numete clas concret. Clasele abstracte
conin cel puin o operaie abstract, adic o operaie neimplementat i care urmeaz s
fie implementat n clasele descendente.
Motenirea ofer marele avantaj cu privire la reutilizarea codului i definirea de
ierarhii de clase. n acest mod sporete considerabil de mult productivitatea muncii n
activitatea de programare.
156
157
Capitol 7
-
CLASA 1
Atribute comune
Operaii comune
Subclas
Subclas
generalizare
specializare
CLASA 2
CLASA 3
Atribute specifice
Atribute specifice
Operaii specifice
Operaii specifice
STUDENI
REI
STUDENI
CSIE
INFORMATIC
...
STUDENI
MANAGEMEN
T
CIBERNETIC
STATISTIC
158
1,
Uniti
administrative
Secii
Cldire
Departamente
Camere
ROI
MOTOR
...
CARBURATOR
CABINA
CILINDRII
...
Implozie
PISTOANE
Descompunere
159
Capitol 7
Conceptele de baz ale modelului obiectual sunt utilizate pentru reprezentarea
acestuia. Modalitatea de reprezentare utilizat de modelul de obiecte este Diagrama de
Asociere a Claselor (DAC), o diagram a claselor de obiecte. Diagrama este practic un
graf al crui noduri sunt clasele de obiecte i ale crui arce sunt asocierile dintre obiecte
i clase de obiecte.
160
161
Capitol 7
162
Capitol 7
relationship LABORATOR dispunede
inverse LABORATOR:: aparinede;
/ Urmeaz definirea semnturilor /
Void adaugunnounr.tel (in string Numr-telefon);
164
Interface LABORATOR
// Definete interfaa LABORATOR
Capitol 7
166
167
Capitol 7
<denumire_variabil> IN <expresie>,
<din-list>]
<expresie] AS <denumire_variabil>]
<expresie] AS <denumire_variabil>,
<din-list>]
n cele ce urmeaz vom cuta s oferim cteva exemplificri pentru a observa
modul de utilizare a limbajului OQL; referirile fcndu-se la structura bazei de date
orientate obiect din figura 7.3.
Exemplul 1, evideniaz faptul c nu ntotdeauna este necesar utilizarea clauzei
SELECT FROM WHERE; Este suficient a specifica doar: STUDENT, aceasta este o
cerere complet i are ca efect obinerea / listarea tuturor studenilor (ca obiecte cu
identitate).
Exemplul 2, evideniaz modul n care este utilizat clauza DISTINCT din fraza
SELECT:
SELECT DISTINCT X.Adresa
FROM
X IN
STUDENT
WHERE
X. Nume = IONESCU
are ca efect returnarea setului adreselor tuturor studenilor ce au numele de IONESCU.
Mai exact, datorit clauzei DISTINCT, se va returna o valoare de tip SET <ADRESE> n
care valoarea unei adrese apare o singur dat. Cu alte cuvinte, vor fi listate toate adresele
la care se afl studeni cu numele IONESCU, fiecare adres fiind luat o singur dat. n
modelul relaional, mai precis n algebra relaional, clauza DSTINCT are semnificaia de
operator de proiecie a relaiei STUDENI pe atributul Adresa.
Dac, n cererea de mai sus, ar fi omis clauza DISTINCT din fraza SELECT,
cererea ar returna o valoare de tip Bag <ADRESE>; un Bag de adrese este similar cu un
SET ns poate avea elemente duplicate.
Tipul SET vine cu metodele ncorporate nuntru, care d programatorului accesul
la elementele setului pentru a obine funcionalitatea asigurat de cursori n SQL
(identificator/pointer, cu ajutorul cruia se manipuleaz o zon de memorie alocat i
gestionat de sistem pentru a se executa o comand).
Exemplul 3 evideniaz modul de invocare a unei metode n faza SELECT:
SELECT
FROM
WHERE
T. adaug_un_nou_nr_tel (031_456789)
T IN UNIVERSITATE
T. Denumire =
A.S.E.
Are ca efect adugarea unui nou numr de telefon n setul de numere. Cererea
actualizeaz baza de date ns nu returneaz nimic apelantului metodei.
Exemplu 4 are ca scop evidenierea unei expresii de definire a unei interogri. Se
cere s se gseasc toi studenii ce au domiciliul stabil n Bucureti:
DEFINE
Bucureteni
AS
168
169
Capitol 7
timpului i concurenei, altele au disprut. n cele ce urmeaz vom recurge la o prezentare
a unor dintre SGBDOO.
7.8.1. GEMSTOME
GEMSTOME este unul dintre primele i probabil cel mai pur sistem de gestiune a
bazelor de date orientate obiect care a existat ca produs comercial [Maier 86; Maier i
Stein 1987; Brett .a. 1989]. Este construit pe o extensie a lui Smalltalk numit OPAL.
Spre deosibire de ObjectStore, Ontos i Versant, care sunt strns legate de C++,
OPAL nu este strns legat de un limbaj anume dei, limbajul GemStone poate fi accesat i
din alte limbaje cum ar fi Smaltalk i C++.
GemStone este orientat n principal pe aplicaii CAD/CAM i nu trateaz
motenirea multipl.
7.8.2. ONTOS
ONTOS a fost realizat i comercializat n 1990 de catre Ontos Billerica,
Massachesetts. Utilizeaza C++ ca limbaj de programare pentru baza de date orientate
obiect. Ontos este succesorul unui produs mai vechi numit VBase care utiliza un model
orientat obiect cu prorpiile sale limbaje COP(C Object Processor o extensie orientat
obiect a limbajului C pentru acces la baza de date) i TDL (Type Definition Language).
Ulterior, n Versiunea 2.0 TDL este nlocuit cu o extensie orientat obiect a SQL, numit
Object SQL sau ONTOS SQL, care adaug sintaxa cererilor obiect la SQL standard.
Limbajul COP este nlocuit i el cu C++.
Dei este strns legat de C++, Ontos este accesibil i din alte limbaje. Versiunea
2.0 a introdus un 4GL numit Shorthand, un front-end windows, un raport i generator de
forme numit Studio. De asemenea, are un browser grafic i un instrument (tool) grafic
capabil s genereze n C++ fiiere i schema bazei de date.Metodele nu sunt stocare n
baza de date aa c trebuie meninute legturi ntre metode i date. Schema este stocat n
baza de date i este accesibil programatorilor. Clasele speciale sunt prevzute s
modeleze structurile de compunere.
Este suportat n LAN-uri utiliznd un model de arhitectur Client/Server.
Performana produsului este accentuat de posibilitatea clasterizrii discului i utilizrii
tehnicilor Caching. ncepnd cu Versiunea 2.2 (1993) ofer suport extins pentru aplicaii
de grup de lucru precum i o mai bun notificare a evenimentelor.
ONTOS posed i alte caracteristici, dintre care enumerm:
- trateaz foarte bine motenirea multipl;
- folosete perechi de atribute inversate, n sensul c menine n mod automat
atribute inverse, deci valorile sunt atribute care reprezint o asociere (valori unice
sau multiple);
- trateaz obiecte mari de tip BLOB-uri. Pentru inerea n pagin, atributele foarte
voluminoase sunt stocate cu ajutorul unei reprezentri n arbori B;
- gestioneaz versiuni ale obiectelor;
- dispune de utilitare pentru administrare, cum ar fi: un browser interactiv pentru
examinarea i modificarea schemei bazei de date, comenzi de modificare i
170
7.8.3. VERSANT
VERSANT este un alt SGBD orientat obiect realizat de Versant Object
Technology la Menlo Park n California. Este implementat pe platforma de sistem UNIX,
utiliznd C++ ca limbaj de acces primar ns este posibil i accesul din Smalltalk sau din
Object SQL.
VERSANT este cunoscut i folosit n mod deosebit pentru aplicaii multi-user n
mediu de baze de date distribuite. Este bazat pe o arhitectur multi-client/multi-server.
Totodat, ofer posibiliti de comunicare cu alte sisteme, cum ar fi ORACLE, cu
instrumente de dezvoltare pentru GUI (Grafic User Interface) sau generatoare de
rapoarte. El poate asigura i un Depozit de date (Repository) pentru un mediu CASE cum
ar fi Rational ROSE CASE. Alte caracteristici ale sistemului VERSANT constau n faptul
c trateaz structurile compuse, motenirea multipl i variantele de versiuni.
7.8.4. ORION
ORION este un sistem orientat obiect realizat de MCC din Austin, Texas. El ofer
posibilitatea identificrii obiectelor, tratarea motenirii multiple, obiectelor compuse,
gestiunii versiunilor, indecilor pentru acces i tranzacii. De asemenea ofer suport
pentru baze de date distribuite, gestioneaz evoluia dinamic a bazei de date i accesul
autorizat la date. Este implementat n limbajul LISP, versiunea extins orientat obiect a
acestuia.
O particularitate mai deosebit a proiectului de cercetare ORION de la MCC
const n faptul c se concentreaz pe evoluia schemei bazei de date. Schema unei baze
de date orientate obiect e dinamic i poate evolua n diferite feluri fr a necesita o
recompilare, astfel ca permite [Ivan Graham]:
- Schimbri in descrierea unui obiect prin adugare, tergere, actualizare de atribute
sau metode;
- Schimbri fa de reprezentarea obiectelor de ctre sistem, de genul: adugare,
tergere sau schimbare de identitate a unui obiect. tergerea unei clase de obicei
are mai degrab efect asupra tuturor subclaselor sale care motenesc proprietile
i comportamentul superclaselor;
- Schimbri n structurile bazei de date ca: adugare, tergere sau modificare a unei
moteniri, compuneri sau relaie asociativ.
n general, evoluia sau dezvoltarea structurii baze de date e complicat datorit
prezenei motenirii, n sensul c dac o superclas comport schimbri atunci trebuie
verificate toate implicaiile dependente de acea schimbare. Este important de observat c
identitatea obiectului e pstrat i trebuie s fie pstrat pe parcursul tuturor schimbrilor
schemei bazei de date orientate obiect. Pentru acest motiv se presupune c schimbrile
schemei trebuie s fie rezonabile i nu n totalitate. Aceast problem este strns legat de
cea a controlului de versiune i majoritatea bazelor de date orientate obiect ofer un mod
de control de versiune la nivel de instan, clas i schem. n acest scop, se poate defini
o clas cu semnificaie de istoric care ar conine ca atribute: versiunea precedent,
171
Capitol 7
versiunea urmtoare i membru de set de versiune, care pot fi motenite de orice obiect
care necesit control de versiune [Kim 1988].
Dei ORION a fost n mare parte inspirat dup modelul SMALLTALK exist un
numr important de extensii n model. De exemplu, motenirea multipl e suportat i
exist trei metode prevzute pentru rezoluia de conflict. Se folosete fie o regul left
first (nti stnga) prin care este folosit prima superclas dintr-o list de superclase de la
care se moteneste metoda sau atributul conflictual; sau utilizatorul poate specifica
alegerea pe care ar trebui s o fac obiectul; sau utilizatorul poate specifica c obiectul
trebuie s moteneasc ambele proprieti i s redefineasc una dintre ele.
7.8.5. ITASCA
ITASCA este realizat si comercializat de Itasca Systems Inc din Minesota,
Minneapolis. Este un produs softwer bazat pe prototipurile de cercetare ORION, ns
mult dezvoltat i perfecionat (1993).
ITASCA ca i ORION utilizeaz limbajul LISP ns accept i alte limbaje de
programare cum ar fi: CLOS, C, C++ i Fortran. Ruleaz pe staii de lucru UNIX.
ITASCA se bazeaz pe o arhitectur multi-clinet/multi-server distribuit i nu are
nume centralizat sau server de date aa c nu exist un singur punct de eec (de cdere).
Ofer posibilitatea urmririi evoluiei schemei dinamice i a unor servicii bune de
securitate i concuren. Trateaz structurile compuse iar notificarea evenimentului poate
fi bazat pe marcare (flag-based) sau mesaj (message-based).
ITASCA ofer facilitile de partiionare a bazei de date i distribuirea acestor
partiii n spaiu geografic, fr a fi nevoie ca utilizatorul s tie unde anume sunt
stocate/localizate datele. Se folosete indexarea claselor pentru a spori performana, iar
unde e posibil cererile se execut n paralel pe diferite maini din cadrul reelei.
7.8.6. O2
Sistemul de gestiune a bazelor de date orientate obiect O2 a fost realizat n Frana
de Consoriul de cercetare Altair ntre 1986 i 1990 [F. Baucilhon 1988; F. Baucilhon i
C. Delobel 1989; 1991]. Dup 1991 el a fost dezvoltat i comercializat de O2 Technology
la Versailles. O2 este implementat n C++ ns anumite pri sunt implementate ntr-un
limbaj propriu numit O2C. Este disponibil pe platformele UNIX SUN , HP, IBM, BULL
i DEC.
O2 constituie un motor de baze de date, O2 Engine, n interiorul cruia sunt
disponibile trei niveluri de utilizare:
- Limbajele de interfa: C i C++, un L4G, O2C, limbajul de cereri obiect O2SQL
i o interfa de programare a aplicaiilor de nivel de baz O2APL:
- Utilitare GUI: un generator a interfeei O2LOOK i un dispozitiv de manipulare
de grafice O2Graph ;
- Utilitare de mediu: un mediu de programare grafic O2Tools i un ansamblu de
componeni O2Kit.
O2Engine completeaz toate funciunile unui motor de baze de date: rspunde
cerinelor de lucru ntr-un sistem distribuit, arhitectura sa rspunde cerinelor unui model
172
7.8.8. OBJECTIVITY/DB
Objectivity (Objectivity Data System Overview; Objectivity, Inc., Menlo Park,
California, 1990) utilizeaz un limbaj de programare de baze de date orientate obiect
bazat pe C++. Este analog cu Object Store, ONTOS i cu VERSANT. Arhitectura sa este
de tip client/server distribuit cu un server central, toate operaiile efectundu-se de o
manier transparent asamblnd baze de date, scheme, utilizatori i calculatoare ntr-un
mediu material de sisteme de exploatare i reele heterogene. Limbajul de interfa
cuprinde o bibliotec de clase n C++, o bibliotec de funcii C i SQL++, suportnd SQL
ANSI complet i numeroase extensii obiect ale lui SQL3.
173
Capitol 7
Un limbaj de nivel nalt, Object Definition Language (ODL), permite declararea
conceptelor de modelare precum i a asocierilor bidirecionale (relaii bazate pe atribute
inverse). Trateaz comportamentul asocierilor ntre obiecte atunci cnd avem de a face cu
mai multe sesiuni i programarea metodelor de traversare a asocierilor. Toate acestea au
ca rezultat generarea automat de metode i de declaraii C++ i C.
Punctul forte a lui Objectivity/DB este arhitectura sa client/Server distribuit, care
ofer o imagine logic unicat pe multiple baze de date instalate pe maini heterogene.
Utilizatorul va avea o imagine logic a obiectelor conectate i el nu va fi preocupat de
faptul c un obiect este ntr-o baz de date pe o staie de lucru SUN sau c un altul se
gsete ntr-o baz de date sub Windows sau VMS. Toate operaiile se desfoar la
modul transparent n acest mediu, unde tranzaciile atomice implic i validarea n dou
faze a metodelor de propagare i versionare a strii sistemului. n acest mod se accept
sub control deplasarea obiectelor dintr-o baz n alta i de pe o platform pe alta fr
afectarea aplicaiilor n curs de desfurare i nici nu reclam modificarea lor. Schemele
multiple sunt create fr afectarea altor utilizatori sau baze de date i sunt utilizabile
simultan cu schemele partajate, permind grupurilor locale s-i defineasc propriile lor
modele.
Bazele de date sunt detaabile de acest mediu partajat (baze de date federale)
pentru a fi utilizate pe periferice portabile, reconectri sau deplasate ctre un mediu
(compatibil) diferit sau nc distribuite ca pri separate sau biblioteci de imagini.
Objectivity/DB este comercializat de Digital Corporation sub numele de DEC
Object/DB i este suportat de platformele SUN, DEC, HP/900, IBM, RS/6000, NCR
3300, SGI, Windows 3.1., Windows 95, Windows NT etc.
174
seturi i multiseturi (Sets and multisets) . Obiectele set pot fi comparate utiliznd
setul de metode tradiional <, , =, , >. Totodat, dou obiecte set (avnd
elementele de acelai tip) pot fi combinate pentru a forma un nou obiect folosind
operatorii
, i (diferen).
Liste: Operaiile de liste tradiionale includ capul de list (head) care returneaz
primul element, coada listei (tail) care returneaz adresa ultimului element din
list; inserare sau adugare de noi elemente n list i respectiv excluderea unui
element din list.
Mai exist o serie de operatori, cum ar fi operatorii agregai (COUNT, SUM,
AVG, MAX, MIN), i operatori pentru conversia de tipuri (exemplu, pentru conversia
unui obiect multiset ntr-un obiect set prin eliminarea duplicatelor).
Identitatea obiectului, adic SGBD trebuie s ofere posibilitatea identificrii, fr
ambiguitate, a oricrui obiect din baza de date. n acest sens cu ocazia ncrcrii oricrui
obiect n baza de date se va recurge la generarea unui identificator unic al obiectului,
numit OID.
ncapsularea, presupune faptul c SGBD trebuie s dispun de capacitatea de a
ncapsula datele i metodele aparinnd obiectelor iar utilizatorii pot avea acces la ele
doar printr-o interfa ce citeaz o anumit metod. La rndul su att metodele ct i
datele pot fi definite publice (+), protejate (#) sau private (-).
Tipuri i/sau clase. Cele dou concepte trebuie s fie ambele prevzute. Primul
concept reprezint un mecanism de verificare pentru acurateea programelor n timpul
compilrii. Al doilea concept reprezint un mecanism care colecteaz extensiile de
obiecte i le definete implementarea lor. Invers, nu e necesar s fie dou forme diferite
de a exprima tipuri i clase i astfel e posibil s exprimm un concept n contextul
celuilalt.
Clase i/sau tipuri de ierarhii, n contextul motenirii, evideniaz faptul c un
SGBDOO trebuie s asigure ca un subtip sau subclas s poat moteni atributele i
metodele de la superclasele sau supertipurile lor.
SGBD trebuie s ofere suport pentru legarea dinamic, n sensul c metodele
trebuie s se aplice la obiecte de diferite tipuri iar implementarea unei metode va depinde
de tipul de obiect cruia i se aplic. Acest aspect presupune faptul c sistemul nu poate
lega denumirea metodelor pn n momentul execuiei (legare dinamic).
SGBD trebuie s ofere un limbaj de manipulare a datelor LMD cu completitudine
de calcul. n acest sens, de exemplu, se apreciaz c standardul SQL3 posed
completitudine de calcul.
Extensibilitatea mulimii tipurilor de date, ceea ce presupune capacitatea de a
defini noi tipuri bazate pe cerinele utilizatorilor.
Durabilitatea sau persistena datelor, ceea ce presupune capacitatea sistemului de
a asigura/suporta persistena datelor. La fel precum i n situaia SGBD convenionale,
datele trebuie s rmn dup finalizarea aplicaiei care le-a creat. Deci utilizatorul nu
trebuie s deplaseze sau s copieze explicit datele, pentru a le putea refolosi.
SGBD trebuie s fie capabil i s ofere faciliti n ceea ce privete operarea i
gestionarea unor volume mari de date (baze de date de mari dimensiuni).
Asigurarea accesului concurent la aceleai resurse.
Asigurarea capacitii de refacere a bazei de date n cazul unor cderi fizice de
hardware sau software, asemntor sistemelor convenionale.
175
Capitol 7
Asigurarea unor limbaje de cereri de nivel nalt cu multiple faciliti de integrare
a bazei de date.
Manifestul bazelor de date orientate obiect mai face referiri la cteva caracteristici
opionale, care sunt interesante i folositoare dar nu eseniale pentru un SGBDOO. Dintre
acestea enumerm: motenirea multipl, distribuia datelor ntr-o reea, posibilitatea
verificrii unui program n timpul compilrii, managementul tranzaciilor i mecanisme
pentru managementul versiunii lor.
177
Capitol 7
Exist o seciune special n specificaiile UML care prevede stereotipuri specifice
pentru clasele i asocierile utilizate n modelarea proceselor de afaceri. Aceasta prevede
stereotipuri ca actor, executant sau entitate pentru o clas i stereotipuri de genul
comunicare simpl sau cale ntre surs i destinaie pentru o asociere.
M O D ELA REA PRO C ESELO R D E A FA CER I
D i a g r a m a c a z u r i l o r d e u ti l i z a r e
M O D E L A R E A S T R U C T U R II S T A T IC E
D ia g ra m a c la s e lo r
D i a g r a m a o b i e c te l o r
M O D E L A R E A D IN A M IC II
D ia g ra m a d e s e c v e n
D ia gra m a d e c o la b o ra re
D i a g r a m a d e s ta r e
D i a g r a m a d e a c ti v i ta te
IM P L E M E N T A R E A
D i a g r a m a c o m p o n e n te l o r
D ia g ram a d e d e sfu ra re
D i a g r a m a p a c h e te l o r
178
179
Capitol 7
pentru a susine aceste utilizri i ajut la identificarea cerinelor sistemului. Atunci cnd
este utilizat n legtur cu diagrama claselor determin limita antrenrii unui proiect n
soluii dezvoltate concurenial, de la sumar la descrieri detaliate, care sunt apoi
transformate n scenarii de cazuri de utilizare multiple.
Un scenariu de caz de utilizare este o instan a unui caz de utilizare, aa cum un
obiect este instan a unei clase. O diagram a unui caz de utilizare nu reprezint un
scenariu de caz de utilizare cu un element model, adic o reprezentare grafic. Un
scenariu de caz de utilizare este alctuit din informaii text care detaliaz evenimentele i
rspunsurile la acele evenimente pentru a satisface cazul de utilizare. Fiecare scenariu de
caz de utilizare furnizeaz o legtur vital pentru nelegerea soluiei de afaceri i a
soluiilor tehnice posibile care o susin.
Fiecare diagram a cazurilor de utilizare are cel puin un caz i un actor. Un caz
de utilizare reprezint secvena aciunilor pe care sistemul le realizeaz pentru a produce
ceva de valoare pentru actorul care interacioneaz cu sistemul. Cu alte cuvinte, un caz de
utilizare poate fi privit ca un serviciu, o utilitate sau functionalitate oferita de un sistem,
subsistem sau de o componenta a acstuia unui utilizator oarecare. Intr-o astfel de situatie,
multitudinea serviciilor sau functiunilor oferite de sistem utilizatorilor definesc
functionalitatea acelui sistem. Actorul / utilizatorul poate fi o persoan sau un alt sistem
extern. Un actor poate participa la mai mult de un caz i, invers, la acelai caz de utilizare
pot participa mai muli actori.
Entitatea ofertant de servicii privita ca sistem, subsistem sau o component a
acestuia pentru utilizatori apare ca o cutie neagr, n sensul c nu este nevoie ca ei s
cunoasc ce conine sau cum este organizat acea entitate. Utilizatorii trebuie s cunoasc
doar ce servicii i poate oferi acea entitate. Exemplu, utilizatorii finali ai unui sistem
informatic trebuie s cunoasc doar ceea ce le poate oferi sistemul, cum ar fi: elaborarea
i editarea balanei de verificare, bilanul contabil, rulajul intrrilor, rulajul ieirilor etc. i
nu cum sunt organizate datele n cadrul sistemului, metodele de acces folosite etc. Alte
exemple i mai simple ar putea fi cele referitoare la seviciile oferite de un Bancomat
(eliberare de numerar, consultare sold cont, efectuare de pli, alimentarea bancomatului
cu numerar etc.) sau un Automat de vnzare de bilete de cltorie pentru transporturi
feroviare, redat n figura 7.31.
In ambele cazuri utilizatorii nu sunt interesai s cunoasc organizarea fizic
intern a celor dou aparate ci doar serviciile posibile oferite de ele.
O diagram a cazurilor de utilizare poate conine trei tipuri de asocieri/relatii i
anume:
- asocieri de comunicare (<<communicate>>, <<comunic>>);
- asocieri de utilizare (<<uses>>, <<utilizeaz>>) sau in UML incluziune <<
include>>;
- asocieri de extindere(<<extends>>, <<extinde>>).
O asociere de comunicare arat care actor particip ntr-un caz de utilizare. Este
tipul implicit de asociere astfel nct nu este obligatorie precizarea acestuia prin
stereotipul <<comunicate>>.
Asocierea de utilizare arat c un caz de utilizare trebuie s includ
comportamentul altui caz de utilizare. Cu ajutorul stereotipului <<uses>> se evideniaz
un comportament obligatoriu, uneori mprtit n comun de mai multe cazuri de
utilizare.
180
ELIBERARE
BILETE
CONSULTARE
MERSUL
TRENURILOR
Client
CONSULTARE
CONDIII
DE TARIFARE
PRELUARE
NUMERAR
Casier
181
Capitol 7
182
183
Capitol 7
[direcie] nume :tip [=valoare implicit]
Direcia poate fi: in (parametru de intrare), out (parametru de ieire), in-out
(parametru de intrare care poate fi modificat).
Exist patru proprieti care pot fi folosite pentru operaii:
- isQuery, starea sistemului rmne neschimbat;
- sequential, trebuie coordonat apelul operaiei astfel nct s se execute doar una la
un moment dat,
- guarded, semantica i integritatea obiectu1ui este garantat n prezena mai multor
fluxuri (operaii executate n acelai timp), este redus la un ape1 secvenial
executndu-se cte una pe rnd,
- concurrent se pot apela de mai multe ori din fluxuri concurente.
Ultimele trei proprieti sunt relevante doar n prezena obiectelor active,
proceselor i fluxurilor de execuie (threads).
Clasele template sunt elemente parametrizate (figura 7.33). Rezultatul instanierii
unei clase template este o clas care poate fi folosit ca orice alt clas.
Cele mai multe instane modelate cu UML sunt instane ale claselor (i se numesc
obiecte), dei exist i instane de componente, noduri, cazuri de utilizare, asocieri.
Instanele modelate se plaseaz n diagrame obiectuale.
Operaiile care se fac asupra unui obiect sunt definite n abstractizarea obiectului.
184
185
Capitol 7
cazurilor de utilizare, un obiect trimite mesajul din linia sa de viaa ctre linia de viaa a
unui alt obiect. Mesajul conine informaii necesare obiectului doi s acioneze. Cu alte
cuvinte, mesajul declaneaz o aciune n obiectul receptor. Un obiect poate s fie att
receptor ct i emitor (recursiv). Opional se poate include un actor care s participe n
scenariul cazurilor de utilizare ca fiind un obiect care trimite i primete mesajele. Un
singur pas n timpul scenariului cazurilor de utilizare uneori poate crea sau distruge un
obiect. Linia de via a obiectului se monitorizeaz prin alinierea vertical a obiectului cu
pasul su de instaniere. Se marcheaz cu X sfritul liniei de via, adic pasul n care
obiectul este distrus.
186
187
Capitol 7
declaneaz aciunea. Diagrama include numele strii, oricrei variabile, n timp ce
obiectul este n funciune, i evenimentul care declaneaz tranziia la o nou stare.
Dreptunghiul cu marginile rotunjite reprezint stri distincte. Orice diagram de
stare include o stare iniial reprezentat printr-un cerc mic de culoare neagr i o stare
final reprezentat prin acelai cerc dar inclus ntr-un cerc puin mai mare. Starea iniial
apare la crearea obiectului. Starea final apare la dispariia obiectului.
Cu excepia strii iniiale i a celei finale fiecare stare are un nume, atributele
proprii unei stri, aciunile i activitile efectuate. Acestor aciuni i activiti le este
atribuit un nume de eveniment, precum i argumente i expresii ale aciunii. Slash-ul "I",
separ expresiile aciunii de la numele evenimentului i argumentele. Aciuni speciale
includ:
- Entry / intrare - aciune efectuat la intrare ntr-o stare
- Exit / ieire - aciune efectuata la ieire dintr-o stare
- Do / aciune efectuat aflndu-se ntr-o stare; evenimentele externe pot ntrerupe
aciunile Do.
Obiectul tranziteaz dintr-o stare n alta cnd apare un eveniment i cnd sunt
ndeplinite anumite condiii. Tranziia este artat cu liniue simple de la o stare existent
ctre o stare de intrare / int. Tranziia conine:
- semntura unui eveniment care include un nume i argumentele separate de
virgule care se afl ntre paranteze
- o condiie de securitate opional care interzice tranziia de stare pn cnd nu
sunt ndeplinite toate condiiile
- o aciune introdus cu slash /
n timpul tranziiei se execut o aciune. Aciunea poate s fie o operaie efectuat
de obiect, un mesaj trimis altui obiect, sau o condiie n cadrul obiectului care
declaneaz schimbarea strii. Aciunea nsi poate include o semntur cnd aciunea
trimite un mesaj altui obiect. Expresia aciunii poate include obiectul receptor i
parametrii transmii acelui obiect receptor. O sgeat reprezint trimiterea unui mesaj
ctre un alt obiect. Acest mesaj poate fi trimis de la obiect n timp ce este ntr-o anumit
stare sau n timpul tranziiei.
Capitol 7
Terminologia diagramei de activitate este uor confundat eu terminologia diagramei de
stare ntruct ambele utilizeaz termenul stri. Starea din cadrul diagramei de activitate
este stare a unei aciuni, noiune distinct de stare a obiectului.
191
Capitol 7
192
193
Capitol 7
194
Baza de date
obiectuala
proiectarea GUI
Interfata
grafica
Cerinte
Diagrama
claselor
Modele de
date fizice
Inginerie inversa
Baza de date
relationala
Metode de acces
Diagrame de interactiune
Cazuri de
utilizare
Modele de
date relationale
Codificarea
Diagrama de
secventa
Metode de acces
Diagrame de implementare
Diagrama de
stare
Diagrama de
colaborare
Diagrama de
stare
Diagrama de
stare
Carduri CRC
Diagrama de
activitate
Test
Fig. 7.41: Interaciunea dintre diagramele UML, tehnica fielor CRC i modelul entitate asociere
Capitol 7
Proiectarea bazei de date. Stratul datelor (data layer) din diagrama claselor poate fi
utilizat pentru a proiecta direct o baz de date orientat obiect sau pentru a construi
corespunztor un model entitate asociere (ER - Entity Relationship) pentru o analiz mai
detaliat a relaiilor. Pe baza modelului entitate asociere se poate construi apoi modelul fizic al
bazei de date relaionale.
Testarea cerinelor. Diagrama cazurilor de utilizare este folosit i pentru a testa dac
sistemul rspunde cerinelor iniiale. Se parcurg toate cazurile de utilizare pentru a vedea dac
sistemul corespunde cerinelor clientului.
196
Capitol 7
Uneori, pentru sistemele de mici dimensiuni, se renun chiar la diagrama claselor
pentru modelul mediului, ntocmindu-se doar acest dicionar de termeni.
Dicionarul este deosebit de important i pentru asigurarea unui limbaj comun n
cadrul proiectului. Cu toii intuim problemele ce pot apare n comunicare datorit utilizrii
unei terminologii necunoscute de toi cei implicai n proiect.
n final trebuie s atragem atenia c la acest nivel analistul nu trebuie s insiste prea
mult pe clasele interne sistemului, acest model fiind destinat identificrii i nelegerii
cerinelor ce deriv din contextul sistemului. Modul n care sistemul va trata aceste probleme,
logica intern, urmeaz s fie detaliate n alte etape, cu ajutorul altor modele.
Modelul mediului, format din diagrama claselor domeniului i dicionarul de termeni,
poate fi utilizat att la dezvoltarea modelului cazurilor de utilizare ct i la identificarea
claselor sistemului n etapa de analiz.
Comand
1..*
descriere
foto
cost
data comenzii
adresa livrare
1..*
Produs
pltit
Factur
cumparator
1
suma
data facturii
termen plat
vnztor
1
Cont
balan
proprietar
198
Utilizator
Administrator
Comand articole
Administrare
<< extends >>
<< extends >>
Actualizare baz de
date
199
Capitol 7
Dac modelul mediului abordeaz cu precdere funcionarea sistemului n contextul
acestuia, modelul afacerii i focalizeaz atenia asupra utilizatorilor i a modului cum
sistemul i deservete.
Diagrama cazurilor de utilizare arat care sunt toate cazurile de utilizare din sistem dar
nu indic modul n care acestea sunt realizate de ctre actori. Modelul cazurilor de utilizare
este completat de o descriere textual a fiecrui caz de utilizare, accentul punndu-se pe
interaciunea cu ali actori i mai puin pe modul n care este executat n cadrul sistemului.
Descrierea cazului de utilizare nregistrare la curs sub forma unei succesiuni de pai se face
ca n figura 7.45:
201
Capitol 7
202
Metalimbaj unde substantivul face parte din modul de definire a cerinelor. Vom
utiliza substantive ca cerine sau sistem ca parte a limbajului de modelare i nu
pentru a reprezenta obiecte din domeniul problemei.
Extern sistemului atunci cnd substantivul este relevant pentru a descrie funcionarea
sistemului, dar nu se refer la ceva din interiorul su.
Atribut atunci cnd este clar c substantivul desemneaz o realitate simpl, fr un
comportament interesant, care este de fapt un atribut al altei clase. Numele unui
client ar putea fi un astfel de exemplu.
203
Capitol 7
Capitol 7
comportamentul clasei Factur este reprezentat n figura 7.49.
206
207
Capitol 7
NOMENCLATOR DE
PRODUSE FINITE
ELABORARE PLAN
DESFACERE
ELABORARE PLAN
PRODUCIE
DETERMINAREA
STRUCTURII
PRODUSELOR
DETERMINAREA
NECESARULUI DE REPERE
REPERE
ACHIZIIONATE
NECESAR DE
MATERII PRIME
PLAN APROVIZIONARE DE
REPETE
PLAN APROVIZIONARE
DE MATERII PRIME
PROSPECTARE
PIAA
PROSPECTARE
PIAA
CONTRACTARE
CONTRACTARE
DERULARE
CONTRACTARE
DERULARE
CONTRACTARE
STOCURI
PRODUSE
CONTRACTE
ELABORAREA PL. I
GRAFICULUI DE
DESFACERE
PLANUL DE
DESF.
COMENZI
NOM. PROD.
CAP. DE
PROD.
FIA PROD.
NECESAR
REPERE
FIA PROD.
FIA
TEHNOLOG.
ELABOR. PLAN
PROD.
DETER. STRUCTURII
PRODUSULUI-REPERE
PLANUL DE
PROD..
SIST. NECESARULUI
DE REPERE
GRAF.DE APROV.
DETER. NECES. DE
MAT. PRIME PTR.
REPERE DIN PROD.
PROPRIE
PLAN APROV.
SIST. NECESARULUI
DE MATERII PRIME
PL. PROD.
SIST. STOC
EXIST.
FURNIZORI
DETER. NECES. DE
APROVIZIONAT
IDENT. FURNIZ.
POTENIALI
LANSAREA
CERERILOR DE
OFERTE
-------OFERTE
ALEGEREA OFERTEI
OPTIME
A
209
SIST. NECES. DE
APROVIZIONAT
SIST. FRNIZORILOR
POTENIALI
-------CERERI DE OFERTE
SIST.
COMPARATIV
A OFERTELOR
Capitol 7
AVIZ DE EXPED.
CONTRACTAREA
I PERFECTAREA
CONTRACT
CONTRACTE
FERME
DERULAREA
CONTRACTELOR
/ LANSARE COMENZI
COMENZI
RECEPIA MATERII
PRIME
FACTURA
NIR
STOCURI
RULAJE
INTRRI
FIA LIMITA
DAREA N CONSUM
STOCURI
BON DE
CONSUM
RULAJE
IEIRI
210
211
Capitol 7
Elab. plan
desfacere
func. dep.
desfacere
funcionar
marketing
include
Elab. plan
producie
func. dep.
producie
Det. struct.
prod. pe repere
funcionar
aproviz.
tehnolog
funcionar
serv. plan
Det. neces.
de aproviz.
gestionar
Identif.
furniz.
poteniali
Prospectarea
pieei
funcionar
marketing
include
include
Lansare
oferte
Primire
oferte
Evaluarea
ofertelor
funcionar
aprovizionare
Contractare
Contractare
include
Simularea
tratativelor
comerciale
extend
A
212
Alegerea
ofertei
optime
manag.
benef.
manag.
furnizor
Perfectarea
contractelor
dir. ec.
benef.
dir. ec.
furnizor
jurist
benef.
jurist.
furnizor
gest.
Lansare
comenzi
nreg. n
fia mag.
extend
extend
extend
Derulare
contracte
Recepie
materiale
Refuz
marf
extend
extend
Achitar
e total
Achitar
e
parial
nreg. n
contabilitate
Achitar
e facturi
Funcionar
financiar
Funcionar
aprovizionare
Funcionar
contabilitate
213
Paria
l
Total
COMENZI
SECIE-PROD.
PRODUS
1+
CONTRACTE
DESFACERE
CANT-COMANDAT
1+
1+
STRUCTURA-PRODUS
- REPERE -
BON-CONSUM
CANT-CONSUM.
GESTIUNE
1+
1+
1+
STOC
1+
MATERIAL
1+
CANT-RECEPIONAT
CANT-CONTRACT
TERMEN-LIVR.
1+
FURNIZOR
CANT-FACTUR
PRE-APROV.
COT-TVA
1+
NIR
1+
FACTUR
COMENZI
CONTRACTE
FURNIZOR
- Den-furnizor:
string
- Adresa-furnizor:
string
- cod-fiscal:
integer
- Den-banc:
string
- cont-banc:
string
- telefon:
integer
- fax:
integer
- cod-mat:
- den-mat:
- UM:
- pret mediu
+ creeaz ( )
+ actualizeaz ( )
+ calc. pre. mediu ( )
+ tergere ( )
+ vizualizare ( )
+ creeaz ( )
+ actualizeaz ( )
+ tergere ( )
+ vizualizare ( )
STOC
- cod mat:
- cod gest:
- stoc iniial:
- rata-stoc-iniial:
- stoc-normat:
- stoc-siguran:
- stoc-exist:
MATERIAL
number
string
string
integer
GESTIUNE
- den-gestiune:
string
- cod-gestiune:
integer
- nume-gestionar: string
- garan-gest:
number
integer
integer
integer
integer
integer
integer
integer
+ creare gest ( )
+ actualizare ( )
+ vizualizare ( )
+ creeaz ( )
+ calc. stoc. ex. ( )
+ calc. imobilizri ( )
+ calc-necesar-aproviz. ( )
+ actualizare
NIR
- nr. NIR:
- data NIR:
- cant. recep.:
BON CONSUM
- Nr. bon:
number
- data bon:
date
- cant. eliberat: integer
number
date
integer
+ creeaz ( )
+ vizualizeaz ( )
+ creare ( )
+ adugare ( )
+ vizualizare ( )
215
Capitol 7
FACTURA
- Nr. fact.:
number
- Data fact.:
Date
- Explicaie:
text
- Suma facturat: number
SECIE PROD.
- den. secie:
string
- ef secie:
string
+ creare ( )
+ adugare ( )
+ tergere ( )
+ modificare ( )
+ valoare TVA ( )
+ valoare Factur
COMAND
nr. comand:
number
data:
date
den-furnizor:
string
cod-fiscal:
number
adresa:
string
den-banc:
string
cont-banc:
string
telefon:
number
termen-livrare:
date
destinaia-livr.:
string
COMANDA - MATERIAL
cod mat.:
number
nr. comand:
number
cant. comand:
integer
cant.-livrat:
integer
ternem-livrare:
integer
+ creare ( )
+ modificare ( )
+ adugare ( )
+ creare ( )
+ modificare ( )
+ adugare ( )
FACTURA MAT.
nr. factur:
number
cod-mat:
number
cant.-fact.:
integer
pre-aprov.:
integer
cota-tva:
integer
+ creare ( )
Fig. 7.55. Clasele de obiecte modelarea claselor de obiecte
216
217
Capitol 7
218
219
Capitol 7
220
221
Capitol 7
corespunztoare, se va trece la proiectare lund n considerare i arhitectura sistemului, se
va implementa proiectul n componentele sistemului i n final se vor testa componentele
dac ndeplinesc cerinele surprinse de cazurile de utilizare de la care s-a pornit.
Avantajele unui astfel de proces iterativ sunt multiple. Dintre acestea amintim:
- reducerea costurilor de neconcordan cu cerinele iniiale; dac la un moment dat
este necesar reluarea unei iteraii, atunci pierderile sunt limitate la costurile
iteraiei respective;
- reducerea riscului de a lansa / finaliza produsul cu ntrziere, prin identificarea din
timp a riscurilor majore. n abordarea tradiional abia n momentul testelor finale
erau identificate probleme pentru a cror rezolvare proiectul era ntrziat;
- accelerarea n ansamblu a ritmului de dezvoltare al proiectului; echipa este mai
bine focalizat pe rezultate i pe respectarea unui plan pe termen scurt;
- o mai bun implicare a beneficiarului, precum i rafinarea iterativ a cerinelor
acestuia. n plus acest mod de abordare permite un mai bun control al
schimbrilor datorate att mediului proiectului ct i modificrii specificaiilor
acestuia.
Iteraiile se planific iniial i rareori suport modificri (tiut fiind c orice
abatere de la un plan iniial implic costuri suplimentare). Acest mod de abordare nu
reprezint o scuz pentru un management haotic i nu implic o dezvoltare aleatoare.
Dezvoltare iterativ nu nseamn reproiectarea la infinit a aceluiai modul pn cnd n
sfrit se nimerete o variant care funcioneaz. Aceasta reprezint, din contr, un
instrument de planificare ce reduce, nc din fazele iniiale, riscurile ce ar putea afecta
buna desfurare a proiectului. Versiunile intermediare permit obinerea unui feedback
din partea tuturor celor interesai de proiect i corectarea din timp a eventualelor abateri
nregistrate.
Dac am reprezenta evoluia riscului ntr-o abordare iterativ, fa de evoluia
riscului n cazul modelului de dezvoltare n cascad, se observ c n abordarea iterativ
riscurile majore sunt eliminate nc din fazele iniiale ale proiectului, n timp ce n cazul
modelului n cascad riscurile scad substanial abia n momentul integrrii i testrii
aplicaiei figura 7.57.
Conform RUP, pentru realizarea unui sistem informatic, trebuiesc parcurse n
cadrul unei iteraii urmtoarele procese primare: identificarea cerinelor, analiza,
proiectarea, implementarea i testarea. n cele ce urmeaz vom prezenta mai pe larg
coninutul proceselor de identificarea cerinelor, analiz i proiectare. Pentru
exemplificarea diagramelor i tehnicilor de modelare UML a fost ales un sistem simplu
de rezervare a biletelor pentru o linie aerian. Au fost atinse urmtoarele probleme:
- organizarea sistemului utiliznd pachete;
- identificarea cerinelor sistemului cu ajutorul cazurilor de utilizare;
- modelarea cu diagrame de secven i de colaborare;
- analiza i proiectarea cu diagrama claselor i utilizarea tehnicii fielor CRC;
- modelarea comportamentului cu diagrame de stare i de activitate;
- modelarea componentelor software, distribuirii i implementrii;
- extinderea UML-ului cu diagrama entitate asociere pentru proiectarea bazelor de
date relaionale.
222
223
Capitol 7
orice nivel, de la cel mai nalt, unde sunt utilizate pentru a mpri sistemul n domenii,
pn la cel mai de jos nivel, unde se utilizeaz pentru a grupa cazuri de utilizare, clase sau
componente. n RUP, ca i n cazul altor metodologii orientate pe cazuri de utilizare,
aceasta poate constitui o prim etap. Sistemul de rezervare a fost structurat n cinci
subsisteme (reprezentate printr-o diagram a pachetelor, figura 7.58.): ntreinerea flotei,
sistem de urmrire a zborurilor, sistem de rezervare, sistem contabil, personal.
Sistem de urmerire a zborurilor
Intretinerea flotei
Sistem de rezervare
Sistem contabil
Personal
Substantivele
sunt posibile clase
Verbele sunt
posibile operatii
Actor
Rezervare Zbor
Pasager
Anulare Rezervare
LinieAeriana
Caz de utilizare
225
Capitol 7
cazuri de utilizare pe baza acestor activiti alternative. Secvenele alternative sunt
cuprinse n cazuri de utilizare distincte conectate printr-o relaie de tip "Extends" de cazul
de utilizare iniial. Relaia de tip "Extends" poate fi privit ca relaie de motenire ntruct
cazul de utilizare ce extinde un alt caz de utilizare motenete i suprascrie
comportamentul acestuia. Presupunnd c achitarea biletului se face implicit prin
numerar, dar opional plata se poate face i prin carte de credit, cazul de utilizare
Achitare prin carte de credit extinde cazul de utilizare Achitare zbor (figura 7.60.).
Eliminarea comportamentului redundant cu ajutorul relaiilor de tip Uses
Pentru a elimina o secven de comportament redundant ce apare n cazuri de
utilizare diferite se poate modela acea secven ntr-un caz de utilizare distinct conectat
de cazurile de utilizare iniiale prin relaii de tip Uses. Relaia de tip "Uses" poate fi
privit ca fiind echivalent cu relaia de agregare. n exemplul nostru, fie c rezervarea se
face direct la linia aerian sau printr-o agenie de voiaj, o rezervare trebuie achitat pentru
a fi validat. Cazul de utilizare achitare zbor este utilizat att de Rezervare zbor, ct
i de Rezervare zbor prin agent (figura 7.60.).
Rezervare Zbor
<<uses>>
Pasager
Achitare Zbor
<<extends>>
Achitare prin
carte de credit
<<extends>>
<<uses>>
LinieAeriana
Rezervare Zbor
prin Agent
<<extends>>
Plata neacceptata
Agentie de Voiaj
Ionescu : Pasager
Vlad : Vanzator
Linie Aeriana
solicitare zbor
verifica disponibilitatea
rezervare disponibila
detalii zbor
detalii zbor
transmite preferinte loc
rezerva loc
confirma rezervarea
solicita plata
face plata
face plata
confirmare finala
eliberare bilet
227
Capitol 7
mesajului (sincron, asincron, simplu, opional -balking sau time-out) i vizibilitatea
obiectelor unele fa de altele.
5: detalii zbor
8: confirma rezervarea
9: solicita plata
13:eliberare bilet
Ionescu : Pasager
Vlad : Vanzator
3: rezervare disponibila
4: detalii zbor
12: confirmare finala
1: solicitare zbor
6: preferinte loc
10: face plata
2: verifica disponibilitatea
7: rezerva loc
11: face plata
Linie Aeriana
228
Linie Aeriana
+DisponibilitateRezervare : boolean
+FurnizareDetaliiZbor() : void
+ConfirmareRezervare() : Boolean
numar zbor
1
programeaza
rezerva zbor
Vanzator
1..*
numar rezervare
+RezervaZbor()
+VerificaDisponibilitate()
Rezervare Zbor
NumePasager : char
NumarZbor : int
NumarRezervare : int
1..*
Zbor
+Destinatie : char
+Plecare : char
+DataZbor : char
+OraZbor : char
+Pret : int
+NumarZbor : int
1..*
1..*
este rezervat cu
Agentie Voiaj
-NumeAgentie : char
-AdresaAgentie : char
Bilet
NumeCompanie : char
PretBilet : int
DataZbor : char
OraZbor : char
NumarZbor : int
NumarBilet : char
Agentie Linie Aeriana
-LinieAeriana : char
+AdresaLinieAeriana : char
Pasager
-NumePasager : char
#AdresaPasager : char
-CNP : unsigned long
+SolicitaZbor() : void
+FacePlata() : void
Capitol 7
Abordarea orientat pe responsabiliti
Tehnica fielor CRC este utilizat uneori ca extensie a UML-ului pentru o analiz
orientat pe responsabiliti. Definiiile claselor sunt rafinate pe baza responsabilitilor lor i
a altor clase cu care acestea colaboreaz pentru a ndeplini aceste responsabiliti. Pentru
fiecare clas se ntocmete o fi pe care se evideniaz responsabilitile clasei i care sunt
clasele cu care ea colaboreaz pentru a ndeplini aceste responsabiliti. Aceste informaii se
transpun direct ntr-o diagram a claselor, responsabilitile corespund metodelor, iar
colaborrile corespund asocierilor dintre clase (figura 7.64.).
Pasager
Superclas: <none>
Subclase: <none>
Responsabiliti Colaboratori
Plata biletului
Vanzator_bilet
Solicitare zbor
Vanzator_bilet
Bilet
Superclas: <none>
Subclase: <none>
Responsabiliti
Afl pretul
Companie
Zbor
Superclas: <none>
Subclase: <none>
Responsabiliti
Furnizeaz detalii zbor
Confirm rezervarea
Superclas: <none>
Subclase: <none>
Responsabiliti
Locuri disponibile
Colaboratori
Vanzator_bilet, Zbor
Vanzator_bilet, Zbor
Colaboratori
Companie, Pasager
Colaboratori
<none>
Vanzator_bilet
Superclas: <none>
Subclase: <none>
Responsabiliti
Verific disponibilitatea
Rezerv zbor
Colaboratori
Companie, Zbor
Companie, Pasager
230
231
Capitol 7
O component este un grup de obiecte sau componente care interacioneaz cu scopul
de a furniza un serviciu. O component este similar unei cutii negre pentru care serviciile
sunt specificate prin interfaa sau interfeele sale, fr a se preciza nimic despre componena
sau implementarea intern a componentei. Dezvoltarea bazat pe componente este procesul
care urmrete asamblarea componentelor celor mai potrivite n configuraia cea mai bun
pentru a obine funcionalitatea dorit pentru sistem. Componentele sunt reprezentate n
diagrama claselor din UML prin specificarea interfeei clasei sau pachetului. Exist dou
posibiliti de reprezentare pentru interfa, ca o clas cu stereotipul <<interface>> i lista
operaiilor suportate de interfa n seciunea destinat metodelor sau n variant prescurtat,
ca un mic cerc ataat printr-o linie continu de clas i preciznd denumirea interfeei n
dreptul cercului.
Exemplul din figura 7.66. arat c interfaa Afiabil a clasei Pasager pune la dispoziie
o operaie mut(x coord, y coord) pentru afiarea n GUI. Sunt evideniate ambele modaliti
de reprezentare. Interfaa Persistent a clasei Pasager ofer o operaie salveaz(store at) care ar
putea fi folosit de o clas sau component de acces la baza de date.
interface
Afisabil
+mut(x coord, y coord) ()
Afisabil
<<uses>>
<<uses>>
Persistent
Pasager
+mut(x coord, y coord) ()
+salveaz(store at) ()
GUI
232
Zbor rezervat
Locuri rezervate
Locuri
disponibile la
clasa I
Zbor rezervat
Locuri clasa I
rezervate
Zbor
programat
Gata de
decolare
Locuri la clasa I
Permite
modificari la
clasa I
Anulare
233
Capitol 7
Pasager
Vanzator
Linie aeriana
Solicitare zbor
Verifica disponibilitatea
Alege zbor
Solicita plata
Rezerva zbor
Achita bilet
Confirma rezervarea
Emite bilet
SGBD
Print Server
Plan de zbor
Statie de lucru
234
Statie de
lucru in
aeroport
Server
LAN
Conexiune
Statie de
lucru la
agentia de
turism
Firewall
Imprimanta
bilete
Internet
Acces read-only
Calculatoare
clienti (acasa)
235
Capitol 7
Interfata cu
utilizatorul
Implementare OO
Datele
SGBDOO
Translatare obiectual/relational
Schema fizica
SGBDR
Schema fizica
SGBDR
Diagrama entitate
asociere
Translatare logic /
fizic
236