CATEGORII DOCUMENTE |
Diagramele de clase
Diagramele de clase sunt folosite in modelarea vederii statice de proiectare a unui sistem. Aceasta vedere ofera suport in primul rand cerintelor functionale ale sistemului - serviciile pe care sistemul ar trebui sa le ofere utilizatorilor finali.
Datorita numarului mare de concepte folosite, diagramele de clase sunt considerate tipul de diagrama cel mai complex din UML. O astfel de diagrama descrie tipurile de obiecte (clase de obiecte, tipuri de date si interfete) si diferitele tipuri de relatii care le conecteaza. Elementele continute intr-o diagrama de clase sunt:
o clase de obiecte, interfete si colaborari;
o relatii intre clase (relatii de asociere, generalizare/specializare, agregare,
realizare, dependenta );
o elemente de adnotare si mecanisme de extensie (stereotipuri, constrangeri,
valori etichetate);
Diagramele de clase pot sa mai contina pachete sau subsisteme, ambele folosite pentru a grupa elementele modelului in parti mai mari. Uneori, se poate dori plasarea in diagrama a unor instante, in special atunci cand se doreste vizualizarea tipului (posibil dinamic) al unei instante.
Diagramele de clase se pot folosi in trei modalitati tipice:
Pentru modelarea vocabularului unui sistem - specificarea abstractizarilor
ce fac parte din sistemul considerat si a responsabilitatilor lor;
Pentru modelarea de colaborari simple - vizualizarea si specificarea
multimii de clase (si a relatiilor dintre ele), ce constituie o colaborare;
Pentru modelarea de scheme logice ale bazelor de date;
1.Clasele se reprezinta ca si dreptunghiuri cu 3 sectiuni: prima este numele clasei, sectiunea din mijloc este desemnata pentru atribute, iar cea de-a treia pentru metode .
1.1 Numele clasei este foarte important fiind primul mijloc de recunoastere a resursei
fundamentale din model, drept pentru care trebuie sa fie concis si clar.
1.2 Atribut
Atributul are sintaxa urmatoare:
visibilitate nume [multiplicitate] : tip = valoare_initiala unde:Vizibilitatea poate fi:
o package: cu simbolul ~ ,atributul este accesibil de catre obiectele din acelasi pachet
Student |
+ID:int -Name:String -Description:String -Sex:Char="M" -note[0..*]:Integer |
1.2 Operatii/Metode
Operatia are sintaxa urmatoare:
visibilitate nume_operatie (lista_parametri) : return_type
Student |
+getName():String -corigenta(nota:Integer, materie:String="matematica"):Boolean |
1.3 Obiecte
Un obiect este un concept specific, sau instanta unei clase, avand caracteristici definite de clasa din care face parte. Aceste caracteristici sunt atat structurale(atribute) cat si comportamentale(metode sau operatii). Ele se reprezinta ca dreptunghiuri cu 2 compartimente despartite prin linii orizontale in care numele sunt subliniate, avand sintaxa nume_obiect : [nume_clasa] . Aceasta inseamna ca In exemplul urmator obiectul Popescu este un obiect al clasei Student.
Popescu:Student |
ID=2 Nume="Ion" |
2.Relatii dintre clase
Asociere:
In acest tip de relatie obiectele sunt de obicei asociate intre ele. Asocierea poate avea sau nu un nume care se va afla tiparit in vecinatatea sa si va contine o sageata care precizeaza modul de citire al acestuia. O asociere poate avea nume diferite pentru fiecare directie. Fiecare capat al asocierii este un rol si fiecare rol poate avea un nume ( nume de rol ) care arata cum este vazuta clasa asociata lui de alta. Fiecare rol indica multiplicitatea clasei sale ( cate instante ale clasei pot fi asociate cu o instanta a altei clase ).
Indicator de Multiplicitate: precizeaza cate obiecte din clasa respectiva participa la realizarea legaturii.
Indicator de multiplicitate:
Indicator |
Explicatie |
zero sau unu |
|
unu |
|
zero sau mai mult |
|
unu sau mai mult |
|
n |
n(n>1) |
0..n |
zero sau n(n>1) |
1..n |
unu sau n(n>1) |
Exemple de relatii de asociere:
Mostenire
Relatia de mostenire este o relatie de tip "is a" sau "este" pentru ca tipul subclasei este un tip de clasa parinte. Subclasa mosteneste atributele si metodele clase parinte. In exemplu de mai jos clasa de baza este Language iar subclasele sunt Java si C++:
In exemplul urmator clasa de baza este clasa vehicol iar sublcasele sunt Vehicol terestru si vehicol acvatic care la randul lor sunt clase parinte pentru masina,vehicol amfibie si barca.
Agregare: Cand o clasa este formata ca o colectie de alte clase, relatia dintre aceste clase
se numeste agregare. Este o relatie de tip "Has a".
Exemplu 1:
Figura de mai sus se citeste astfel:
-un agent poate fi parte dintr-o singura agentie, dar nu trebuie sa fie obligatoriu parte a unei agentii(de aici 0..1) el putand fi agent independent;
- agentia este intotdeauna compusa din macar un agent, dar poate avea mai multi(de aici 1..*)
-un agent este considerat un angajat(numele rolului) al unei agentii
Exemplul 2:
Compozitie: este o varianta a relatiei de agregare implicand o puternica legatura a ciclului de viata dintre obiectele associate. Cu alte cuvinte este o forma de agregare in care obiectul parte poate fi membru al unui singur obiect de tip intreg la un moment dat."Obiectul intreg este responsabil pentru existenta si adunarea obiectelor parti."
Exemplul 1:
Diagrama de mai sus se citeste astfel: Compania va avea cel putin un departament iar cand compania va fi desfiintata departamentul va fi desfiintat automat.
Exemplul 2:
Figura de mai sus se citeste astfel o cladire este compusa dintr-una sau mai multe incaperi, iar o incapere poate fi compusa din 0 sau mai multe subincaperi(camere) avem aici de a face cu compozitia reflexiva.
Nota: Clasa parte poate fi legata doar de o singura instanta a clasei intreg.
Realizarea: In relatia de realizare o entitate(de obicei interfata) defineste un set de
functionalitati iar cealalta entitate(de obicei o clasa) implementeaza acele functionalitati.
Exemplu:
In figura de mai sus Parser este interfata iar HTMLParser este clasa ce implementeaza functionalitatile definite de catre Parser. Un alt exemplu:
In figura de mai sus atat clasele Profesor cat si Student implementeaza interfata Persoana.
Dependenta: Este o relatie intre doua elemente in care o schimbare intr-un
element(independent) afecteaza pe celalalt element(dependent).
Exemplu de modelare a relatiilor dintre membrii unei facultati:
Pachete
In cazul modelarii unei arii extinse de business,apar in model foarte multi clasificatori fapt care contribuie la ingreunarea lucrului cu clasele,de aceea limbajul UML ne pune la dispozitie elementul numit pachet. Lucrul cu pachetele ajuta la organizarea claselor pe categorii.Divizarea sistemului in pachete faciliteaza intelegerea acestuia in ansamblu mai ales in cazurile in care pachetul constituie o parte specifica a sistemului.
Un exemplu de pachet ai carui membri sunt evidentiati in interiorul dreptunghiului denumit Accounts.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1469
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved