Tehnicile orientate obiect constituie un nou mod de abordare a sistemelor informatice, bazat pe abstractii ce corespund lumii reale. Obiectele din domeniul sistemului real formeaza cadrul de lucru pentru definirea unui model si ulterior conduc la implementare.
Pana in faza finala dezvoltarea orientata obiect este un proces conceptual independent de limbajul de programare. Poate servi ca mediu pentru analiza si documentare, pentru definirea interfetei cu utilizatorul, sau pentru programare.
Metodele orientate obiect acopera intregul ciclul de viata al sistemului, impartit in trei faze: analiza, proiectare, implementare.
analiza
In faza de analiza se construieste un model precis, concis si inteligibil al activitatii desfasurate (business model), un model complet al sistemului ce va fi construit.
. analistul descrie ce trebuie sa faca sistemul si nu cum o face, urmareste definirea a ceea ce urmeaza sa realizeze, si nu a algoritmilor care vor fi folositi.
. obiectele sunt concepte din domeniul sistemului si nu din domeniul programarii.
. atentia este indreptata asupra conceptelor care vor forma nucleul unei solutii ce utilizeaza tehnici orientate obiect.
. analiza este selectiva, neacordandu-se aceeasi importanta tuturor componentelor si insusirilor; sunt examinate cerintele, analizate implicatiile, retinute doar aspectele esentiale.
. sistemul real se descompune in entitati distincte, se stabilesc legaturile dintre ele si functiile indeplinite.
. rezultatul este un model cu clase si asocieri, folosirea acestora facandu-se in partea de proiectare si implementare.
proiectarea
Scopul principal al proiectarii orientate obiect este sa maximizeze posibilitatea reutilizarii claselor in proiecte ulterioare, sa identifice in relatiile de mo& #351;tenire superclasele care faciliteaza reutilizarea in cadrul aceluiasi proiect.
. se pastreaza structura claselor stabilita in partea de analiza, luand in considerare minimizarea timpului de executie si folosirea rationala a memoriei.
. operatiile identificate in etapa de analiza sunt exprimate algoritmic, cele complexe sunt descompuse in operatii interne simple. Atributele si asocierile sunt prezentate intr-o forma ce permite ulterior implementare ca structuri de date specifice.
. clasele sunt rearanjate prin evidentierea unor relatii de agregare sau de generalizare, sunt completate cu noi operatii si noi atribute, rezultate din abstractizarea comportamentului comun.
. modelul claselor poate fi rafinat prin introducerea de noi clase, care pastreaza rezultate intermediare de calcul.
. considerand clasele ca niste ,,cutii negre" a caror interfata externa este publica, dar ale caror detalii interne sunt ascunse, proiectantul decide atributele care sunt vizibile din exterior. Ascunderea informatiei interne permite ca implementarea unei clase sa fie modificata, fara a cere clientilor clasei sa-si modifice codul. Este necesara o noua documentare a claselor, pe baza celei din partea de analiza, care sa contina si modificarile care au aparut in faza de proiectare.
intr-o ultima faza a proiectarii, clasele si asocierile se regrupeaza in module.
implementarea
In timp ce primele doua etape sunt independente de mediul de programare, in aceasta etapa trebuie aleasa solutia informatica pentru realizarea efectiva a sistemului.
. clasele si relatiile sunt translatate intr-un limbaj de programare, de regula orientat obiect.
. in cele mai multe cazuri, scrierea secventelor de cod intr-un limbaj orientat obiect se face aproape automat, pe baza deciziilor luate in fazele anterioare.
Aplicarea metodelor orientate obiect in dezvoltarea sistemelor informatice conduce la construirea unui model obiect. Elementul central al modelului il constituie obiectul.
1.1 Obiecte
Un obiect este o abstractie, un concept, folosit pentru reprezentarea lumii reale si furnizarea unei baze practice pentru implementarea cu ajutorul tehnicii de calcul. Descompunerea sistemului real in obiecte depinde de modelator si de natura concreta a problemei.
Exemple:
persoana IONESCU, produsul CALCULATOR, factura AS-1234 din 12/03/04 sunt obiecte din lumea reala, ce se regasesc in sistemul informatic privind personalul angajat, gestiunea resurselor si respectiv vanzarea de produse.
Caracteristicile unui obiect sunt: identitate, stare, comportament. Modelul obiect poate fi definit ca o reprezentare directa a realitatii cu ajutorul unor componente elementare cu identitate proprie si caracterizate prin stare si comportament.
Identitatea unui obiect este acea proprietate a obiectului care il distinge de alte obiecte. Obiectul este definit de un identificator intern unic, independent de valoarea sau de adresa de memorie a obiectului. Identificatorul nu este controlat direct de programator si nu se confunda cu diferitele nume utilizate de programator pentru a-l numi.
Starea obiectului reprezinta multimea valorilor tuturor atributelor si legaturilor sale la un moment dat. Starea este adesea asociata cu valoarea unui obiect satisfacand anumite conditii.
Exemple:
▪ persoana IONESCU, caracterizata prin atributele nume, prenume, varsta, vechime in munca, poate fi in starea angajat cu carte de munca sau pensionar, in functie de valorile atributului varsta.
▪ factura AS-1234 din 12/03/09 poate fi in starea achitata sau neachitata, stare determinata de factori externi, reprezentati prin incasarea sau nu a contravalorii sale.
Comportamentul este determinat de ansamblul operatiilor pe care obiectul le poate executa. Exprima modul in care un obiect actioneaza si reactioneaza.
Exemple:
▪ pentru persoana IONESCU, operatia afiseaza permite calcularea si afisarea pe ecran valorii atributului vechime in munca.
▪ pentru factura AS-1234 din 12/03/09, operatia modifica_factura determina modificari in datele inregistrate despre factura.
Comportamentul este cel care altereaza starea unui obiect, determina schimbarea starii sale. Corespunzatoare comportamentului global al obiectului, multimea valorilor grupate intr-o stare, specifica raspunsul obiectului la evenimentul primit.
Pornind de la componentele elementare, modelul obiect se obtine folosind instrumente specifice tehnicilor orientate obiect. Acestea sunt: abstractizarea, incapsularea si ierarhizarea.
abstractizarea
Tema:
Explicati conceptul de abstractizare.
In cazul tehnicilor orientate obiect, prin abstractizare se evidentiaza caracteristicile esentiale ale unui obiect, cele care-l disting de alte obiecte. Practic, problema se abstractizeaza prin gruparea obiectele in clase. Abstractizarea da putere modelarii si capacitate de generalizare de la cateva cazuri particulare la cazuri similare. Definitiile comune (numele atributelor) sunt memorate o singura data pentru clasa, in loc sa fie memorate pentru fiecare instanta. Operatiile pot fi scrise o singura data si toate obiectele beneficiaza de codul reutilizat.
clase si obiecte
O clasa de obiecte descrie o multime de obiecte cu aceleasi proprietati (atribute), acelasi comportament (operatii) si relatii similare fata de alte obiecte. Fiecare obiect se mai numeste instanta a clasei. In termeni implementationali, fiecare obiect contine un pointer la clasa din care provine, deci are acces la toate caracteristicile clasei sale.
O clasa este definita prin:
. numele clasei;
. atributele, expresie a valorilor diferitelor stari ale instantelor de clasa;
. operatiile pentru manipularea instantelor de clase, numite metode. Specificarea metodei poarta numele de semnatura, iar codul care implementeaza operatiile constituie corpul metodei.
Notiunea de clasa este mai mult utilizata de faza de executie, presupunand doua aspecte: generarea de obiecte si stocarea setului de obiecte care reprezinta instantele claselor. Cu ajutorul clasei se descriu obiectele. Obiectul poseda propriile lui valori, lista atributelor si metodele fiind gestionate de clasa.
incapsularea
Incapsularea este un proces de grupare a elementelor unei clase in elemente accesibile din exterior si elemente proprii.
.permite separarea aspectului extern, accesibil altor obiecte, de implementarea interna.
. ofera posibilitatea de a masca atributele proprii ale unui obiect, precum si modul in care se executa operatiile. Implementarea poate fi astfel schimbata fara a afecta aplicatia.
. garanteaza integritatea datelor continute in obiect, datele incapsulate fiind protejate de accese nedorite.
. constituie una din premisele de baza ale reutilizarii. Un obiect poate evolua in timp fara a afecta restul sistemului.
ierarhizarea
Ierarhizarea este o operatie de ordonare a claselor. Ajuta la identificarea relatiilor intr-o ierarhie, la clarificarea si buna intelegere a problemei.
In modelarea sistemelor reale, cele mai importante tipuri de relatii prezente in ierarhia claselor sunt agregarea si generalizarea.
Agregarea este o relatie de tip parte-intreg, in care obiecte care reprezinta componente ale unui intreg, sunt asociate cu intregul. Este o forma de asociere in care exista un obiect agregat, format din componentele sale, componentele fiind vazute ca parte a agregatului. O aceeasi parte poate apartine mai multor agregari. Semantic agregatul este vazut ca un obiect, tratat ca o unitate in multe operatii, desi fizic este format din mai multe obiecte.
Generalizarea este o relatie dintre o clasa de baza si una sau mai multe clase derivate ale ei. Atributele si operatiile comune sunt grupate in superclasa, fiind mostenite de clase.
Observatii:
. Agregarea nu este un concept independent, ci o forma speciala de asociere.
. In timp ce in cazul agregarii una din clase are un rol predominant in raport cu celelalte, in cazul generalizarii clasele sunt integral coerente, subclasa aducand eventuale informatii aditionale, specifice.
. Agregarea implica doua clase, una fiind parte a celeilalte. Generalizarea este un mijloc de structurare a descrierilor pentru o clasa. Superclasa si clasa specifica proprietatile unui obiect, obiectul fiind instanta a superclasei si instanta a clasei.
mostenirea
Partajarea atributelor si operatiilor de-a lungul unei ierarhii intre clase si subclase este evidentiata cu ajutorul conceptului de mostenire.
Mostenirea permite constituirea de noi tipuri de obiecte si clase, evitand rescrierea si recodificarea. Noua clasa poate mosteni atat operatii (metode), cat si variabile de instanta (atribute). In primul caz se poate vorbi de partajarea codului intre metode (code sharing), iar in al doilea caz, de partajarea structurii intre atribute (structure sharing).
Exemplu: in sistemul informatic privind contractarea si vanzarea produselor, documentele pe cere se consemneaza activitatile desfasurate sunt contractul si factura de vanzare. Prin generalizare se poate defini o clasa DOCUMENT, care are drept atribute NumarDocument si DataDocument. Operatiile sunt: CautaData(NrDoc) si StergeDocument(NrDoc). Clasele CONTRACT si FACTURA mostenesc atributele si operatiile clasei DOCUMENT. In plus, clasa CONTRACT are atributele TermenContract si ValoareContract, iar clasa FACTURA are in plus atributul StareFactura.
Mostenirea intre clase poate fi privita sub doua aspecte:
.. structural, cand o clasa are atribute mostenite de la superclasa;
.. comportamental, cand o clasa are metode mostenite de la superclasa.
Tema:
Construiti exemple pentru mostenire strucutrala si comportamentala.
Mostenirea poate fi implementata static sau dinamic.
. mostenirea statica presupune adaugarea campurilor mostenite. In timp ce executia este rapida neimplicand parcurgerea legaturilor de mostenire, redefinirea unei clase este dificila, implicand actualizarea tuturor subclaselor.
. mostenirea dinamica se realizeaza fara copierea campurilor mostenite, si presupune parcurgerea legaturilor de mostenire. Actualizarea este mai usoara, dar executia este mai putin eficienta.
Tema:
Construiti exemple pentru mostenire statica sau dinamica.
Observatii:
. Generalizarea si mostenirea sunt abstractii puternice folosite pentru transmiterea similaritatilor de la o clasa la alta, pastrand totusi diferentele dintre acestea. Subclasele mostenesc trasaturile superclasei, dar pot avea propriile lor atribute si operatii.
. In timp ce generalizarea se refera la relatia dintre aceeasi clasa si subclasele sale, mostenirea se refera la mecanismul de a transmite atribute si operatii de-a lungul unei relatii de generalizare. In implementare, mostenirea este sinonima cu notiunea de reutilizare a codului. Trasaturile reutilizabile sunt grupate in superclase.
polimorfism
In stransa legatura cu mostenirea, polimorfismul defineste caracteristica unei operatii de a se comporta in mod diferit in functie de clasa de obiecte careia ii apartine. Polimorfismul permite invocarea pentru obiecte de diferite tipuri a operatiilor cu acelasi nume (semnatura), dar semantica si implementare diferita. La primirea mesajului, stabilirea metodei care se aplica se face in mod dinamic, in functie de clasa obiectului in cauza. Instante ale unor clase diferite pot fi adresate uniform, primind aceleasi mesaje, dar manifesta comportamente diferite.
Unified Modeling Language (UML) este succesorul unui val de metode de analiza si proiectare orientate obiect, aparute la sfarsitul anilor 80 si inceputul anilor 90. Este un limbaj unificat de modelare, rezultatul unui proces de introducere a standardizarii in analiza si proiectarea orientate obiect. Este punctul de pornire in dezvoltarea viitoarelor limbaje grafice.
Contributii esentiale in definirea limbajului unificat de modelare au avut Grady Booch, Jim Rumbaugh si Ivar Jacobson.
UML nu este o metoda, este o notatie grafica care acopera majoritatea tipurilor de diagrame necesare in timpul ciclului de viata al dezvoltarii software.
Punctele forte:
▪▪ este un cadru de analiza obiect, oferind:
.. diferite perspective complementare ale sistemului, care ghideaza utilizarea conceptelor obiect;
.. numeroase nivele de abstractizare, care permit controlul complexitatii cu ajutorul solutiilor obiect.
▪▪ este un suport de comunicatie
.. notatia grafica permite exprimarea vizuala a unei solutii obiect;
.. aspectul formal al notatiei sale limiteaza ambiguitatile;
.. aspectul vizual faciliteaza evaluarea si compararea solutiilor.
▪▪ este un limbaj formal si normalizat care:
.. castiga precizie;
.. castiga stabilitate;
.. incurajeaza utilizarea instrumentelor CASE.
▪▪ asigura independenta fata de limbajul de implementare si de domeniul aplicatiei
Puncte slabe:
▪ punerea in practica a limbajului UML necesita pregatire complexa de specialitate.
▪ permite reprezentarea modelelor, dar nu defineste procesul de elaborare al modelelor. Este un demers iterativ si incremental, ghidat de cerintele utilizatorilor de sistem.
▪ nu descrie cum se dezvolta software-ul, dar se poate folosi cu orice proces.
Ghidat de cerintele utilizatorului de sistem, UML este folosit intr-un demers iterativ si incremental, bazat pe nivele de abstractizare. Diagramele UML sunt mijloacele de reprezentare si vizualizare a elementelor de modelare.
Tema: Prezentati cele 4+1 perspective definite de Ph. Kruchten in 1995.
Diagrama cazurilor de utilizare descrie functionalitatea sistemului din punctul de vedere al utilizatorului. Contine actori si cazuri de utilizare:
. actorii sunt elementele din sistem care genereaza sau primesc evenimente.
. un caz de utilizare este o secventa de actiuni declansate cand un actor apeleaza la sistem pentru a indeplini un proces.
Un caz de utilizare este initiat intotdeauna de un actor si exprima o functie a sistemului, declansata ca raspuns.
Constituindu-se intr-un set complet de evenimente initiate de unul sau mai multi actori, diagrama cazurilor de utilizare precizeaza limitele sistemului, specifica interactiunea care are loc intre actori si sistem, relatiile dintre sistem si mediu. In plus, permit utilizatorului sa-si structureze cerintele, sa defineasca modul in care va interactiona cu sistemul pentru a obtine rezultatul dorit.
Pentru reprezentare se folosesc urmatoarele simboluri:
actor participare caz de utilizare
UML defineste trei tipuri de relatii intre actori si cazurile de utilizare (fig. 1)
.. Relatia de comunicare: actorul participa direct la cazul de utilizare;
.. Relatia
de incluziune: o instanta a cazului de utilizare sursa
include si comportamentul descris de un alt caz de utilizare. Acest tip de
relatie se foloseste pentru simplificarea diagramei cazurilor de
utilizare in situatii complexe.
.. Relatia de extensie: cazul de utilizare sursa poate fi extins cu comportamentul unui alt caz de utilizare destinatie. Prin relatia de extensie poate fi introdus, in anumite conditii, sub forma unui caz de utilizare distinct, un nou caz de utilizare.
Observatii (fig. 1)
. aceeasi persoana poate juca rolul mai multor actori, initiind mai multe cazuri de utilizare.
. un caz de utilizare poate avea mai multi actori, fiecare cu rolul sau
fig .1
Descrierea unui caz de utilizare consta in una sau mai multe instante ale cazului de utilizare, numite"scenarii". Scenariile sunt utilizate pentru a evidentia alternative intr-un caz de utilizare si pentru a testa completarilor sau corectiilor in cazurile de utilizare.
Un scenariu include urmatoarele elemente:
inceputul cazului de utilizare - evenimentul care declanseaza cazul de utilizare;
. sfarsitul cazului de utilizare - evenimentul care provoaca sfarsitul cazului de utilizare;
. interactiunea actorilor in cadrul cazului de utilizare;
. schimbul de informatii in timpul interactiunilor intre sistem si actori;
. cronologia si originea informatiilor, momentul inregistrarii lor in interiorul sau in exteriorul sistemului;
. repetarile de comportament, care pot fi descrise in secvente de cod prin structuri repetitive;
. situatiile optionale, folosind o formulare de tipul: 'Actorul alege unul dintre evenimentele urmatoare, eventual de mai multe ori".
Descrierea cazurilor de utilizare cuprinde:
▪ denumire sau titlu
▪ scop
▪ actori
▪ punct initial
▪ punct final
▪ descriere derulare
▪ rezultat masurabil
Exemplu:
in sistemul informatic privind acordarea unui credit pentru o firma,
descrierea cazului de utilizare-Analiza documentatiei depuse- este:
Denumire : Analiza documentatiei depuse
Scop : Calcularea coeficientului de risc
Actori: Inspectorul de credite
Punct initial: Inspectorul de credite solicita documentatia depusa de firma
Punct final Obtinerea valorii coeficientului de risc
Descriere derulare
. inspectorul de credite solicita documentatia depusa de firma;
. daca firma este un client al bancii se verifica informatiile existente despre client; daca nu, baza de date este actualizata cu datele generale ale clientului;
. din documentatie se selecteaza informatia care contribuie la calcularea coeficientului de risc;
. in cazul unui coeficient de risc ridicat, cererea este respinsa;
se analizeaza suma ceruta de firma prin comparatie cu posibilitatile bancii de a acorda creditul solicitat;
. daca rezultatul este favorabil (nivel de responsabilitate < 100.000.000) cererea de credit este admisa si inregistrata;
Rezultat masurabil: Cererea de credit este admisa si inregistrata, sau respinsa
Pentru acest caz de utilizare avem diagrama cazului de utilizare in figura
Structura statica a sistemului, privita ca ansamblu al claselor de obiecte si al relatiilor dintre clase, este reprezentata cu ajutorul a doua tipuri de diagrame: diagrama claselor si diagrama obiectelor.
Diagrama claselor prezinta structura sistemului dintr-un punct de vedere general. In stransa legatura cu ea, diagrama obiectelor evidentiaza obiectele si legaturile dintre ele. Diagramele obiectelor prezinta cazuri particulare, faciliteaza intelegerea structurilor de date complexe.
Clasele corespund semantic entitatilor din sistemul real. O clasa desemneaza un grup de obiecte care au proprietati similare (atribute), un comportament comun (operatii) si relatii comune cu alte obiecte. Reprezentarea unei clase presupune specificarea atributelor ce-i definesc structura, a operatiilor ce-i definesc comportamentul si a relatiilor cu celelalte clase:
. fiecare atribut poate lua o valoare dintr-un domeniu de definitie specificat in reprezentarea clasei. Implicit, atributele sunt incapsulate in clasa, accesul la ele fiind permis prin intermediul operatiilor.
. operatiile sunt reprezentate impreuna cu numarul, ordinea si tipul argumentelor necesare definirii actiunii lor. In cazul cand operatia este o functie, se specifica si tipul valorii returnate.
. asocierea este o conexiune semantica bidirectionala intre clase. Ea este reprezentata printr-o linie continua intre clasele implicate, de-a lungul careia se scrie numele asocierii. Daca sensul de transmitere a mesajelor este unic, acesta se evidentiaza printr-o sageata de la emitator la receptor.
Dintre proprietatile unei asocieri, multiplicitatea este cel mai des intalnita in diagramele de structura. Este determinata de context si evidentiaza numarul instantelor unei clase ce se pot asocia cu o singura instanta din alta clasa.
In diagrama claselor, multiplicitatea se specifica printr-o cifra urmata eventual de semnul "+" sau semnul "*", printr-un interval sau printr-o succesiune de cifre. Astfel,
inseamna ca o instanta a unei clasei este legata la o singura instanta a clasei asociate;
sau (1*) inseamna ca una sau mai multe instante ale unei clase sunt legate cu o instanta a clasei asociate;
inseamna ca doua pana la cinci instante ale unei clase sunt legate cu o instanta a clasei asociate;
inseamna ca una, doua sau trei instante ale unei clase sunt legate cu o instanta a clasei asociate.
Agregarea si generalizarea, ca forme de asociere prezente in procesul de ierarhizare a claselor, sunt reprezentate cu simboluri specifice:
. agregarea este reprezentata printr-un romb plasat la capatul de asociere al clasei agregat (figura 4);
. generalizarea este reprezentata printr-un triunghi ce puncteaza spre superclasa(figura 4);
In UML, o clasa este reprezentata printr-un dreptunghi in care se specifica numele clasei, atributele si operatiile.
Nume clasa Furnizori
Atribute cod:integer
Nume:string
Operatii CitesteCod()
ScrieNume()
Desemnarea obiectelor se face prin nume individuale sau prin nume generice in locul numelor individuale; numele obiectului este subliniat.
401_furnizor : Furnizori
Observatie:
Notatia UML permite reprezentarea nivelului de vizibilitate al atributelor si metodelor, definind trei drepturi de acces:
. public - functiile din toate clasele pot accede la aceste atribute sau metode;
. protejat - accesul este rezervat functiilor din clase intre care exista o relatie de generalizare (functiile claselor si subclaselor);
. privat - accesul este limitat la metodele clasei.
Corespunzator, caracterul ce reprezinta vizibilitatea este:
pentru un atribut public;
pentru un atribut protejat;
pentru un atribut privat.
Figura 3 prezinta diagrama claselor in cazul sistemului informatic privind aprovizionarea cu produse conform comenzilor primite de la clienti
fig. 3
Diagrama de secvente ilustreaza interactiunile dintre obiecte de-a lungul unui scenariu al unui caz de utilizare.
. fiecare obiect este reprezentat printr-un dreptunghi in care se inscrie numele. Linia de viata a obiectului se specifica printr-o bara verticala.
. mesajele sunt reprezentate prin sageti orizontale de la emitator la receptor. Convenind ca timpul se scurge de sus in jos, ordinea de trimitere este data de pozitia pe axa verticala.
. elementele prezente in diagrama de
secvente sunt translatate in diagrama claselor:
. mesajele corespund operatiilor prin care obiectele comunica;
. pentru fiecare mesaj, in clasa obiectului destinatar trebuie sa existe o operatie corespunzatoare, reactia obiectului la mesajul primit.
Exemplu:
in sistemul informatic privind aprovizionarea cu marfuri, succesiunea operatiilor de la receptia marfii pana la inregistrarea facturii in cadrul serviciului financiar poate fi prezentata in diagrama de secvente din figura 4.
fig. 4
Diagrama de colaborare este complementara diagramei de secvente, constituind un alt mod de reprezentare a relatiilor dintre obiecte.
. prezinta un grup de obiecte si interactiunile dintre ele; obiectele si legaturile dintre ele au aceeasi reprezentare ca in diagrama obiectelor;
. mesajele schimbate intre obiecte sunt reprezentate de-a lungul legaturilor; ordinea de trimitere a diferitelor mesaje este indicata printr-un numar amplasat la inceputul mesajului.
. numele mesajului corespunde unei operatii definite in clasa obiectului destinatar al mesajului, argumentele sale corespunzand parametrilor actuali ai operatiei;
. argumentele mesajelor sunt reprezentate ulterior fie in pseudocod fie in sintaxa limbajului de programare;
. pentru a evidentia declansarea interactiunilor de catre un element extern sistemului, in diagramele de colaborare pot fi cuprinsi actori.
De exemplu (fig.5), diagrama de colaborare definita pentru a evidentia aprovizionarea cu materiale si pastrarea lor in gestiune este:
fig.5
In faza de analiza, diagramele de colaborare urmaresc scenarii definite pornind de la cazurile de utilizare. Ele pot completa modelul de analiza, adaugand noi clase: de frontiera (pentru interactiunile dintre sistem si actori) si de control.
In faza de proiectare, diagrama de colaborare furnizeaza un punct de vedere complet al dinamicii sistemului, evidentiind comportamentul claselor ca raspuns la aparitia unor evenimente, noi operatii si clasele carora le apartin.
Colaborarile definite pentru a urmarii anumite cerinte ale utilizatorilor pot conduce la aparitia sau disparitia unor obiecte, la modificarea proprietatilor unui obiect, la actualizarea restrictiilor de integritate sau la modificarea relatiilor dintre obiecte. In cazul in care obiecte apartinand aceleiasi clase participa la colaborari diferite, in functiile de scenarii diferite ale aceluiasi caz de utilizare, se pot specifica impreuna cu mesajele conditii ce aduc detalii suplimentare pentru implementare.
Diagramele de colaborare impreuna cu diagramele de secvente alcatuiesc asa zisele diagrame de interactiune, ce evidentiaza mesajele trimise intre obiecte. In timp ce o diagrama de secvente se construieste pentru un singur scenariu in care pot fi implicate mai multe obiecte, diagramele de colaborare contin un grup restrans de obiecte, ce pot fi implicate in mai multe scenarii.
Diagrama de stare (diagrama schimbarilor de stare) descrie comportamentul obiectelor unei clase prin stari si evenimente.
. completeaza descrierea unui caz de utilizare;
. se construieste doar pentru clasele cu comportament dinamic semnificativ;
. modeleaza ciclul de viata al unei singure clase, evidentiind si eventualele evenimente trimise de ea la alta clasa din sistem;
. contine o singura stare initiala si una sau mai multe stari finale, determinate de conditiile de aparitie ale evenimentelor; starea este descrisa printr-un nume care o identifica si o lista de actiuni/activitati ce sunt executate la aparitia unui eveniment.
. tranzitia de la o stare la alta reprezinta schimbarea starii datorita unui eveniment; ea este reprezentata printr-o sageata de la starea sursa la starea destinatie etichetata cu:
.. numele evenimentului care a generat tranzitia
.. conditia de aparitie a evenimentului
.. actiunea ce se executa la aparitia evenimentului.
. elementele prezente in diagrama de colaborare sunt translatate in diagrama claselor:
.. actiunile/activitatile ce sunt executate la aparitia unui eveniment corespund unor operatii descrise in clasa;
.. starea unui obiect la un moment dat este evidentiata printr-un atribut inclus intre atributele clasei
Exemplu: in sistemul informatic privind aprovizionarea, diagrama de stari pentru o factura este cea din figura 6:
fig. 6
Diagrama de activitati descrie comportamentul sistemului introducand elemente de implementare. Foloseste urmatoarele elemente: actiune, tranzitie, decizie:
. actiunea corespunde unei etape in executia unui algoritm. Fiecare operatie, privita ca o inlantuire de actiuni, poate fi detaliata in operatii elementare. Pentru simplificarea diagramelor, actiuni omogene pot fi grupate in subactivitati.
. tranzitia de la o actiune la alta se reprezinta printr-o sageata etichetata eventual cu:
▪ numele evenimentului care determina tranzitia
▪ conditia de aparitie a evenimentului
. decizia indica ramificarea unei tranzitii in functie de indeplinirea unei conditii.
Atasata unui caz de utilizare, diagrama de activitati ii detaliaza actiunile si procesele corespunzatoare. Pentru prezentarea derularii actiunilor sunt folositi termeni apropiati utilizatorului.
Exemple:
▪ diagrama de activitati din figura 7 evidentiaza activitatile desfasurate pentru aprovizionarea cu marfa si inregistrarea ei in gestiune. Poate folosi pentru completarea descrierii cazurilor de utilizare din sistemul informatic privind aprovizionarea, sau poate insoti diagrama de secvente din cadrul aceluiasi sistem informatic.
fig. 7
Atasata unei clase cu comportament dinamic semnificativ, diagrama de activitati descrie tranzitia de la o stare la alta sau algoritmul de prelucrare al operatiilor; contine elemente de implementare ale operatiilor descrise in clase. Actiunile pot fi descrise in limbaj natural, in pseudocod sau intr-un limbaj de programare (C++, Visual Basic). Echivalente schemelor logice utilizate in programarea structurata, diagramele de activitati contin structurile fundamentale de programare: liniara, repetitiva sau alternativa.