Diagrama UML de clase
UML (Unified Modelling Language) este o modalitate detaliata de a modela o componenta software. La acest nivel apar toate clasele din sistem, membrii lor si relatiile dintre ele. Deoarece in OOP modulul fundamental de abstractizare este clasa, in UML se gasesc notatii specifice atat pentru detalierea unei clase (interfete) cat si pentru relatiile dintre clase.
O clasa este reprezentata printr-un dreptunghi avand trei zone:
numele clasei - pentru clase abstracte, numele este cu caractere italice. Deasupra numelui se mai poate specifica intre << >> daca este interfata (interface), enumerare (enumeration), ...
atribute
metode - daca o clasa derivata implementeaza, suprascrie sau supraincarca metoda respectiva din clasa de baza, atunci ea va fi mentionata si in clasa derivata
Pentru atribute si metode avem urmatoarele specificatii:
vizibilitate - se pune in fata numelui si poate fi: + public, - private, # protected, / derived, subliniat static
numele membrului -pentru metode abstracte, numele este cu caractere italice
lista de parametri pentru metode
tip - daca o metoda este void, tipul lipseste
Tipul se specifica dupa numele membrului si poate fi insotit de un factor de multiplicitate, care poate fi un numar, o steluta (infinit), sau un interval.
Intre clase pot exista urmatoarele relatii:
mostenire (generalizare) - o linie continua cu o sageata catre clasa de baza (Masina si Camion sunt mostenite din Vehicul). In clasele derivate nu se mai scriu inca odata atributele sau metodele din clasa de baza, decat daca acestea (doar metodele) capata implementare sau functionalitati noi.
agregare si compozitie - o linie continua cu un romb la clasa container. La fiecare capat al liniei pot sa existe factori de multiplicitate. Agregarea se figureaza printr-un romb gol si semnifica faptul ca diverse instante ale clasei container pot sa refere acelasi obiect (de exemplu Ion si Maria pot sa o aiba pe Ana ca prietena comuna). Compozitia se figureaza printr-un romb plin si semnifica faptul ca un obiect este detinut doar de catre un container (o roata poate apartine doar unei masini)
dependenta - o linie punctata cu sageata catre clasa de care se depinde. Mai poate arata si faptul ca o clasa foloseste metode sau atribute ale clasei de care se depinde. Daca intre doua clase este relatie de mostenire, atunci dependenta este implicita si nu se mai figureaza.
asociere - o linie continua simpla. Arata ca intre clase exista o dependenta functionala, fara insa ca aceasta dependenta sa implice folosirea directa a uneia (sau a membrilor ei) de catre cealalta
http://dijkstra.cs.upt.ro/~petrum/slides/2011/UML110311.tar.gz
Diagrame UML de secventa
Diagrama de secventa descrie din punct de vedere temporal etapele interactiunilor dintre componentele unui sistem
O diagrama de secventa este compusa din urmatoarele componente:
obiecte - obictele care interactioneaza in diagrama. Pe verticala, de la fiecare obiect este o linie punctata, care este axa timpului, cu crestere in jos.
stimuli (semnale/actiuni) - reprezinta o interactiune intre doua obiecte (sau al obiectului cu el insusi). Se figureaza prin sageti continue orientate de la initiator la destinatar. Stimulii sunt numerotati in ordinea aparitiei lor. Pe sageata se scrie tipul actiunii. Stimulii pot avea si raspunsuri figurate prin sageti inverse fata de cea a stimulului initial, goale si cu linie intrerupta. Pe raspunsuri se scrie obiectul returnat sau doar ca este raspuns. Stimulii pot fi de doua feluri: sincroni si asincroni. Stimulii sincroni se marcheaza prin sageata plina si semnifica faptul ca initiatorul asteapta pe parcursul executiei comenzii. Stimulii asincroni se marcheaza prin sageata goala si semnifica faptul ca si dupa ce a fost primit raspunsul, executia comenzii continua independent de initiator. Unii stimuli pot sa nu declanseze operatii la destinatie, ei fiind doar informativi (afisareStatus)
intervale de executie - dreptunghiuri goale pe axa timpului corespunzatoare obiectului care executa acea actiune. Daca doua actiuni ale aceluiasi obiect au suprapuneri de timp, se vor marca prin dreptunghiuri partial suprapuse.
Diagramele de mai sus au fost realizate cu programul StarUML: http://staruml.sourceforge.net/