Documente Academic
Documente Profesional
Documente Cultură
A efectuat
Pîrlog Andrei
A verificat
Bunici Sergiu
1
Chişinău 2020
Diagrame de clase
Clase
O clasă de obiecte reprezintă un grup de obiecte care au:
o proprietăţi similare (atribute),
o un comportament comun (operaţii),
o relaţii comune cu alte obiecte şi
o o aceeaşi semantică.
De exemplu, "Persoana", "Firma", "proces" sunt clase de obiecte.
Semantica asociată unei clase corespunde unui punct de vedere. Obiectele din
lumea reală pot fi abstractizate în mod diferit. De exemplu, un cal poate fi încadrat în
clasa mijloacelor de transport terestre sau în clasa animalelor.
In UML, o clasă este reprezentată printr-un dreptunghi alcatuit din trei compartimente care
conţin: numele clasei, atributele, operaţiile. Compartimentul atributelor şi cel al operaţiilor
pot fi omise.
2
Regulile de vizibilitate se aplica atat atributelor cat si operatiilor din clase si se refera la
domeniul de acces permis la un membru al unei clase. Fiecare nivel de vizibilitate este
reprezentat printr-un simbol:
Clasa detaliata
Relaţiile dintre clase sunt abstracţii ale relaţiilor existente între obiecte. Fiecărei
familii de legături între obiecte îi corespunde o relaţie între clasele obiectelor.
Obiectele sunt instanţe ale claselor,
Legăturile între obiecte sunt instanţe ale relaţiilor dintre clase.
3
Diagramele de clase redau structura statica a unui sistem software.
Exista doua tipuri principale de relatii intre clase:
o asociere si
o generalizare.
Asocierea
Nume de rol.
Numele de rol sunt optionale. Numai numele asocierii este obligatoriu pentru o
asociere.
Dacă între două clase există o singură asociere, numele asocierii este suficient pentru a
preciza relaţia. Numele de rol se folosesc de regulă atunci când între două clase există mai
4
multe asocieri. In loc de nume de rol se poate scrie un verb sau o fraza care contine un
verb, pentru a explica semantica asocierii:
Observatie: Executable UML impune specificarea numelor de rol. Ele sunt folosite in codul
generat automat pentru implementarea asocierilor (VEZI generarea automata a codului
pornind de la diagramele de clase).
Aritatea asocierilor
Cea mai mare parte a asocierilor sunt binare - ele unesc două clase. Asocierile de aritate
superioară se reprezintă cu ajutorul unui romb, ca în figura de mai jos. De exemplu,
asocierea ilustrată în figura urmatoare exprimă faptul ca “Proiectele sunt implementate prin
Programe scrise în Limbaje de programare”.
Proiect Limbaj
Program
Asociere ternară.
Multiplicitatea asocierilor
Fiecare rol al unei asocieri poate purta o indicaţie de multiplicitate care arată câte obiecte
ale unei clase pot fi legate la un moment dat unui obiect al celeilalte clase. De exemplu, o
firma poate avea unul sau mai mulţi angajaţi. O persoana poate lucra la o singura firma.
5
Multiplicitatea poate fi "unu", "mai multe "(*) sau un subansamblu de întregi pozitivi: 1,
0..1, M..N, * sau 0..* (de la zero la mai mulţi), 1..*.
Asocieri cu atribute
Asocierile pot fi caracterizate prin atribute. In figura urmatoare, “Nota” este un atribut al
asocierii existente între clasa “Student” şi clasa “Tema”.
Asocierea dintre clasa Student şi clasa Tema este de tip N la N. Fiecare student realizează
individual o tema dată iar nota obţinută nu poate fi reprezentată nici ca atribut al studentului
(căci un student efectuează mai multe teme), nici ca atribut al temei (căci fiecare student
primeşte o notă pentru aceeaşi tema). Nota este un atribut al relaţiei dintre clasa studenţilor
şi clasa temelor.
6
O asociere cu atribute este numită asociere atributată. Ea poate fi reprezentată
printr-o clasă cu atribute şi operaţii proprii. O asemenea clasă, numită uneori clasă-
associere, este ataşată asocierii printr-o linie punctată:
A B
C D
attribute
operaţii
7
Asocierile 1 la mai mulţi şi mai mulţi la mai mulţi pot fi calificate. Calificarea este
specificată printr-o cheie ataşată rolului clasei de plecare.
A Cheie B
R
Director Fişier
Nume de fişier
Agregarea
Agregarea este o formă particulară de asociere care exprimă o relatie "compus -
componenţi".
O clasa are anumite parti, care insa au o existenta independenta. Agregarea este
desemnată printr-un un mic romb amplasat alături de clasa agregat:
8
Un document are mai multe paragrafe şi fiecare paragraf este alcătuit din mai multe fraze.
Compunerea
9
Relaţia de compunere este semantic echivalentă cu considerarea componenţilor ca
atribute ale clasei agregat:
Generalizarea
Ierarhiile de clase sunt bazate pe noţiunile de clasificare, generalizare şi specializare.
Generalizarea constă în factorizarea elementelor comune (atribute, operaţii şi
constrângeri) ale unui ansamblu de clase într-o clasă mai generală, numită
superclasă. Clasele sunt ordonate într-o ierarhie. Săgeata care simbolizează
generalizarea între două clase punctează către clasa mai generală:
In ierarhia din figura de mai sus, fiecare clasă (exceptând clasa rădăcină) are o singură
super-clasă. Reprezentarea grafică corespunde unui arbore, numit şi arborele de
moştenire. Clasele pot avea mai multe super-clase. In acest caz, generalizarea este numită
multiplă iar ierarhia de clase se reprezintă printr-un graf , numit şi graful de moştenire.
10
nouă, sub-clasă a uneia sau mai multor clase existente. Specializarea este o tehnică
foarte eficientă de extensie coerentă a unui ansamblu de clase existente. Noile
cerinţe sunt încapsulate în sub-clase care extind func ţiile existente. De exemplu,
dacă într-o aplicaţie apare necesar să se reprezinte "bicicleta" ca vehicul de
transport, în plus faţă de cele reprezentate în ierarhia de mai sus, atunci se va defini
o clasă nouă, sub-clasă a clasei "Vehicul terestru", în care vor fi definite
particularităţile bicicletei ca vehicul terestru. Fiecare sub-clasă a unei ierarhii
moşteneşte atributele şi operaţiile definite în clasele aflate pe calea de la clasa
radacină la subclasa respectiva, fiind cu atât mai specializată cu cât se află mai
departe de radacină.
Relaţia de generalizare definită în UML este mai abstractă decât relaţia de moştenire
care există în limbajele de programare obiect, cum ar fi C++. Ea este mai adecvată
etapei de analiză (exista si intre cazuri de utilizare!). Decizia asupra modalităţii de a
realiza generalizarea se ia mai târziu, în etapa de proiectare.
Prin clasificare şi generalizare, universul problemei este divizat in parţi independente care
grupează obiectele prin afinitate. Modificarea unei părţi antrenează un minimum de
modificări ale celorlalte, fapt pus în evidenţă de arborele de moştenire: fiecare subarbore
grupează obiectele care împart caracteristicile rădăcinii sale. De exemplu, adăugarea
de noi caracteristici la clasa Articol-de-lux (figura )nu afectează clasa îmbrăcăminte şi nici
subclasele acesteia, dar extinde automat caracteristicile subclaselor clasei Articol-de-lux.
11
Uneori, anumite clase sunt create doar ca surse de moştenire pentru alte clase; ele sunt
clase abstracte. De exemplu, clasa Articol este o clasa abstractă daca nu
caracterizează complet nici un obiect din universul problemei. Clasa Articole-electrice
a fost introdusă pentru a factoriza proprietăţile electrice (de exemplu, tensiunea de
alimentare, consumul şi altele), comune calculatorului şi articolelor electrocasnice.
Notatie:
Navigabilitate
12
Urmatoarea diagrama de clase modeleaza o aplicatie care permite plati pe baza de ordine
ale clientilor.
Dependente si constrangeri
O dependenta este o relatie intre 2 clase in care modificarea uneia poate forta modificarea
celeilalte. Exemplu: CompanyDetails depinde de Company. Daca se modifica Company
trebuie sa se modifice si CompanyDetails.
13
O constrangere este o conditie pe care orice implementare a diagramei trebuie sa o
satisfaca. Este scrisa intre paranteze {}. Exemplu: Un obiect Section poate fi parte dintr-un
obiect CourseSchedule numai daca nu a fost anulat.
14
3) In proiectarea de detaliu si implementare
- Diagramele contin clase de obiecte intr-un anumit limbaj de programare
- Diagramele fac parte din modelul structural al sistemului
Diagrame de obiecte
O diagrama de obiecte reda un set de obiecte si legaturile dintre ele la un moment dat.
C: Companie
d1:Departament d2:Departament
nume = “Vanzari” nume = “A&C”
p:Persoana
nume=”...” :Informatii:
IDangajat=1234 adresa=...
5
titlu=”dir.vanzari”
O diagrama de obiecte este o instanta a unei diagrame de clase sau partea statica
a unei diagrame de interactiune.
15
Exemplu de diagrama
16