Sunteți pe pagina 1din 10

Diagramele de clase.

Diagramele de clase sunt folosite in modelarea vederii statice de proiectare a unui sistem. Aceasta vedere ofera suport in primul rnd 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, constrngeri, 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 cnd 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 public: cu simbolul + ,atributul fiind accesibil din afara clasei o protected: cu simbolul # ,atributul este accesibil din subclasele clasei din care face parte o private :cu simbolul ,atributul nu este accesibil din afara clasei o package: cu simbolul ~ ,atributul este accesibil de catre obiectele din acelasi pachet Multiplicitatea indica numarul de valori pe care pe care il poate lua un atribut. Multiplicitatea este reprezentata ca limita_inferioara limita_superioara Tip indica tipul de data al atributului si poate fi: int, Integer, String etc.. Valoare_initiala este valoarea initiala a atributului. 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

vizibilitatea la fel ca in cazul atributelor; nume_operatie numele operatiei respective; lista_parametri sintaxa fel: tip = valoare_default unde: o fel este optional si poate fi:

in: indica faptul ca parametrul este input-only, si se poate sa nu fie modificata de operatie out: indica faptul ca parametrul este output-only, si se poate sa fie modificat de operatie inout: indica faptul ca parametrul este input, si se poate sa fie modificat de operatie sa comunice informatie clientului care invoca operatia respective.

Tip: tipul de data al parametrului

Return_type: tipul datei pe care operatia il intoarce.

Student

+getName():String -corigenta(nota:Integer, materie:String=matematica):B oolean

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 tiprit n vecintatea sa i va conine o sgeat care precizeaz modul de citire al acestuia. O asociere poate avea nume diferite pentru fiecare direcie. Fiecare capt al asocierii este un rol i fiecare rol poate avea un nume ( nume de rol ) care arat cum este vzut clasa asociat lui de alta. Fiecare rol indic multiplicitatea clasei sale ( cte instane ale clasei pot fi asociate cu o instan a altei clase ).

Indicator de Multiplicitate: precizeaza cate obiecte din clasa respectiva participa la realizarea legaturii.

Indicator de multiplicitate: Indicator 0..1 1 0..* 1..* n Explicatie zero sau unu unu zero sau mai mult unu sau mai mult n(n>1)

0..n 1..n

zero sau n(n>1) 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 calse, 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 department 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.

S-ar putea să vă placă și