0% au considerat acest document util (0 voturi)
14 vizualizări30 pagini

C3 - StructuralModeling

Încărcat de

Marius Paun
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PPTX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
14 vizualizări30 pagini

C3 - StructuralModeling

Încărcat de

Marius Paun
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PPTX, PDF, TXT sau citiți online pe Scribd

CAP.

3
STRUCTURAL
MODELING
(DIAGRAMA DE
CLASE)
1. Modelul structural -
 Introducere
Reprezinta structura aplicatiei, adica obiectele/clasele din
aplicatie si relatiile dintre acestea
 clase de obiecte, cu atribute si metode
 Relatii de asociere, mostenire
 Este creat pe baza
 modelului functional al sistemului dezvoltat anterior
 Diagrama cazurilor de utilizare
 Diagrama de activitati
 arhitectura logica a aplicatiei
1. Modelul structural -
 Introducere
Modelul structural este dezvoltat printr-un proces iterativ, prin
rafinari/detalieri succesive
 Forma iniţială a modelului structural este una simplă,
conceptuala
 Reflecta doar conceptele de business din domeniul
functional relevante pentru dezvoltarea sistemului
(domain classes sau entity) si relatiile dintre acestea
(asocieri)
 Exemple de clase: Client, Factura, Plata, Produs
 Sunt luate in considerare doar relatiile de asociere si
descrierea multiplicitatii/cardinalitatii lor
 Exemple de relatii de asociere: Client – Factura, Factura –
Produs, Factura – Plata
 Modelul structural conceptual reprezinta vocabularul care
sta la baza comunicarii eficace intre analisti si utilizatori
1. Modelul structural -
Introducere
 Modelul structural evolueaza pe masura ce se avanseaza in
dezvoltarea sistemului
 El devine din ce in ce mai detaliat si mai putin conceptual
 Se adauga noi clase cu roluri specifice, conform
arhitecturii logice – controller, repository, service etc.
 Se introduc relatiile de mostenire, dependenta
 Se specifica navigabilitatea relatiilor de asociere
 Se aplica principii si sabloanele de proiectare
 Modelul structural poate fi redat prin
 Diagrama de clase
 Diagrama de obiecte
 Cardurile CRC (Class-Responsibility-Collaboration)
2. Diagrama de clase. Elementele
principale
 Ce se reprezinta in diagrama de clase?
 clasele de obiecte ale aplicatiei, cu atribute si metode, si
relatiile dintre clase
 Ce NU se reprezinta?
 Interactiunile dintre obiectele/clasele aplicatiei
 detaliile (algoritmice) ale implementarii comportamentului
aplicatiei

Clasa de obiecte

Relatie de asociere Relatie de agregare Relatie de compozitie

Relatie de mostenire Relatie de realizare Relatie de dependenta

zi detalii si exemple de relatii in suportul de curs si PPT (cap. 1 )


2. Diagrama de clase. Elementele
principale
2.1 Diagrama de clase. Reprezentarea
claselor
Elementele specificate la descrierea claselor:
 numele clasei
 se utilizeaza font italic pentru clasele abstracte
 pentru atribute:
 numele şi tipul
 valori implicite si valori posibile
 vizibilitate (+, -, #, ~,/)
 atributele de tip class scope (statice) sunt subliniate
 visibility name : type [count] = default_value
 pentru operaţii:
 numele
 listă parametri si tipul datei returnate
 operaţiile abstracte sunt evidenţiate cu font italic
 operatiile statice sunt subliniate
 visibility name (parameters) : return_type
 includerea stereotipului <Interface> pentru clasele de tip interfaţă
2.1 Diagrama de clase. Reprezentarea
claselor
Clase de asociere
 permite reprezentarea unei relatii de asociere care are attribute proprii
 in exemplul dat, relatia de asociere “many-to-many” dintre Comanda si Produs are un
atribut propriu - Cantitate
 se creeaza clasa de asociere LinieComanda, care va continue si atributele de referinta
catre cele doua clase

 spre deosebire de celelalte doua


clase, obiectele unei clase de
asociere nu au o existenta de sine-
statatoare – ele depind de existenta
unei relatii de asociere intre obiecte
din cele doua clase
2.1 Diagrama de clase. Reprezentarea
claselor
 Identificarea claselor începe cu
 studierea vocabularului specific domeniul respectiv
 studierea regulilor afacerii (a proceselor afacerii)
 analiza descrierii detaliate a cazurilor de utilizare
 identificarea claselor pe baza specificatiilor narrative
 substantivele reprezinta potentiale clase, obiecte sau atribute
 adjectivele pot reprezenta atribute
 verbele sunt potentiale responsabilitati ale unei clase
(operatii/metode)
 Pot fi utilizate 4 metode de identificare a obiectelor si relatiilor
 Analiza de text (textual analysis) – presupune identificarea si
analiza substantivelor si a verbelor
 Brainstorming
 Lista obiectelor comune – se iau in considerare 4 categorii:
evenimente, tranzactii, lucruri/resurse fizice sau tangibile,
actori/roluri
 Utilizarea unor sabloane (business pattern)
2.1 Diagrama de clase. Reprezentarea
claselor
Exemple de sabloane (business paterns)
2.2 Reprezentarea relatiilor dintre
clase
uri de relatii intre clase de obiecte:
 Generalizare/Specializare
 Mostenire intre clase
 Realizare – implementare a unei interfete
 Asociere – in afara relatiilor de asociere obisnuite, mai exista trei tipuri de as
 Agregare
 Compozitie
 Dependenta
2.2 Reprezentarea relatiilor dintre
clase
Relatie de realizare (o clasa
Relatie de mostenire
class Class Structure implementeaza
class Class Structure o interfata)

BunMaterial «interface»
Tranzactie
- CodBM :int
- DenumireBM :char + genereazaNotaContabila() :void
- PretInregistrare :double
- UM :char

+ calculValoareCheltuiala() :void

Incasare

ObiectInv entar - Explicatie :char


MateriePrima - NrDoc :int
- DurataUtilizare :int - Suma :double
- ContEvidenta :char - TipDoc :char
+ calculValoareCheltuiala() :void
+ calculValoareCheltuiala() :void + casare() :void + genereazaNotaContabila() :void

Se mostenesc:
Se mostenesc doar:
•Atribute
•Semnaturile metodelor
•Semnaturile metodelor
•Implementari de metode
2.2 Reprezentarea relatiilor dintre
clase
Relatii de asociere - descriu legaturile dintre obiectele aceleiasi clase
sau din clase diferite
• Exemplu – relatia de asociere dintre clasele Comanda si Client leaga
obiectele Comanda de obiectul Client asociat
• Sunt caracterizate prin:
 Grad– numarul claselor implicate intr-o relatie de asociere
o Unare, binare,
class Class Structure ternare, de grad 4, …

Client class Class Structure


class Class Structure
- adresa :String
- cod :int
- nume :String Disciplina
Persoana 0..1 - persoanaContact :String
- tel efon :int - CodDisc :int
- Adresa :char - DenDisc :char
+cl ient 1
- CNP :char
0..*
- Nume :char *
Proiect
0..1 Examineaza
este casatorit cu - activitati :Activitate [1..*]
- client :Client
- cod :String Student
Profesor
Relatie de -
-
dataInceput :Date
dataSfarsit :Date
1 *
- Matricol :char
- CodProf :int
gradul unu -
-
nume :String
observatii :String
- NumeProf :char
- NumeStudent :char

(recursiva) -
-
persoanaResponsabila :Persoana
stareProiect :StareProi ect

+ adaugaActivi tate(Activi tate) :void


+
+
listaActi vitati () :Activitate
stergeActivitate(Activitate) :void
Relatie de gradul trei (ternara)

Relatie de gradul doi (binara)


2.2 Reprezentarea relatiilor dintre
clase
Relatii de asociere
• Sunt caracterizate prin:
 Rol – un nume atribuit relatiei
o Exemplu – relatiei de asociere dintre Comanda si Client I se
poate atribui numele “Emite”
 Multiplicitate – numarul obiectelor dintr-o clasa care sunt asociate
unui singur obiect din clasa cealalta
o Exemple de exprimare a multiplicitatii
1 (exactly one)
0..1 (zero or one)
1..* (one or more)
0..* (zero or more)
3..5 (three to five inclusive)
 Atribute – se reprezinta prin intermediul claselor de asociere (vezi
2.1)
 Navigabilitate – arata daca obiectul unei clase are o referinta catre
un obiect din clasa cu care este asociata
o se reprezinta prin sageti amplasate la capetele relatiei de
asociere
o Poate fi nenavigabila, unidirectionala sau bidirectionala
2.2 Reprezentarea relatiilor dintre
clase
Tipuri aparte de relatii de asociere
 Agregare- este o forma speciala de asociere, de tipul “is part of”
sau “part-whole”
 Compozitie – este o relatie de agregare mai puternica, de tipul “is
entirely made of”
 Partile au aceeasi durata de viata ca si intregul – partile sunt
sterse atunci cand se sterge intregul
 O parte poate apartine unui singur intreg
 Dependenta – este o relatie de asociere de tipul “use temporarily”
 Arata ca o clasa utilizeaza o alta clasa, in sensul ca are attribute
sau operatii cu parametri de tipul celeilalte clase
 Este probabil ca modificarea clasei independente sa determine
necesitatea modificarii clasei dependente
 Adesea, reprezinta un detaliu de implementare
2.2 Reprezentarea relatiilor dintre
clase Relatie de agregare
class Class Structure

Produs Material

- CodProdus :int - CodMaterial :int


- CostProductie :double - DenMaterial :char
- DenProdus :char - PretUnitar :double
- UM :char - UM :char

 Un material poate “fi parte” (sa intre in fabricatia) mai multor produse
 Stergerea unui produs nu implica stergerea materialelor din care este fabri

class Class Structure


Relatie de compozitie

Proiect Activ itate

- CodProiect :int - CodActivitate :int


- DataInceput :char - DataIncepere :char
- Durata :int - Denumire :char
- Titlu :char - NrOreOmEstimat :int

 O activitate poate asociata cu un singur proiect


 Stergerea unui Proiect determina stergerea tuturor obiectelor Activitate aso
2.2 Reprezentarea relatiilor dintre
clase
Relatii de dependenta
class Class Model

Client

-
-
ClientID :int
ClientNume :char Clasa IncModel se afla in
«property get» relatie de dependent fata de
clasele Client si Factura
+ getClientID() :int
+ getClientNume() :char
«property set»
+ setClientID(int) :void deoarece ea are attribute si
+ setClientNume(char) :void
metode cu parametric de
1

0..*
tipul celor doua clase, Client
Factura
IncModel ssi Factura.
- ClientSel :Client
- FactId :int - FacturaSel :Factura
- FactNr :char - LstClient :Client [1..*]
- FactSuma :double - LstFactura :Factura [0..*]
- FactValoare :double - repo :Repository
- Partener :Client
«property get»
«property get» + getClientSel() :Client
+ getFactId() :int + getFacturaSel() :Factura
+ getFactNr() :char + getLstClient() :Client
+ getFactSuma() :double + getLstFactura() :Factura
+ getFactValoare() :double + getrepo() :Repository
+ getPartener() :Client
«property set»
«property set» + setClientSel(Client) :void
+ setFactId(int) :void + setFacturaSel(Factura) :void
+ setFactNr(char) :void + setLstClient(Client) :void
+ setFactSuma(double) :void + setLstFactura(Factura) :void
+ setFactValoare(double) :void + setrepo(Repository) :void
+ setPartener(Client) :void
2.3 Identificarea claselor şi relaţiilor.
Exemplu
Reguli ale afacerii în sistemul de gestiune a comenzilor
clienţilor
Reguli ale afacerii Clase Relaţii identificate
identificate
Clientul este un tip de persoana. Clienţi Generalizare
Persoana
Comanda este un tip de tranzacţie. Tranzacţie Generalizare
Comandă
O comandă conţine una sau mai multe Comandă Agregare compusă
articole, iar un articol nu poate exista fara Linie_Comanda
comanda din care face parte

Un client poate initia mai multe tranzactii, Comanda Asociere


iar o tranzactie este initiata de un client si Client
numai unul.
2.3 Identificarea claselor şi relaţiilor.
Exemplu
Rezultatul analizei
2.3 Identificarea claselor şi relaţiilor
Identificarea relatiilor de
generalizare
 Identificarea relaţiilor de generalizare poate pleca de la:
 identificarea în modelul domeniului a propoziţiilor adevărate ce
conţin aproximativ expresia „este un tip de” (“Is a kind of”)
 prin generalizare - identificarea unor atribute şi/sau operaţii
commune mai multor clase – elementele commune vor fi
incluse in superclasa
 prin specializare – identificarea unor atribute si/sau operatii
specifice unor grupuri de obiecte din aceeasi clasa
2.4 Diagrama de clase.
Exemplul 1
2.4 Diagrama de clase. Exemplul
2
3. Diagrama de obiecte

 reprezinta o instantiere a tuturor elementelor unei diagrame


de clase
 Sunt mai lesne de inteles decat diagramele de clase fiindca
este mai usor sa gandesti in termenii unor obiecte concrete
(instante ale claselor) decat al unor abstractiuni (clase)
 pot fi utile in descoperirea unor atribute sau relatii noi,
depistarea unor greseli de modelare/proiectare
3. Diagrama de obiecte
4. Cardurile CRC. Elemente de
baza
 Descrierea unei clase poate să înceapă cu specificarea
responsabilităţilor acesteia (aşa cum sugerează chiar
principalii autori ai UML Grady Booch, James Rumbaugh
şi Ivar Jacobson în „The UML User Guide”)
 responsabilitatea este ceva ce o clasă:
 ştie – valorile atributelor
 face – operaţiile, precum modificarea valorii
atributelor, calcule economice, etc.
 colaborator – o altă clasă/obiect cu care interacţionează
clasa/obiectul analizată în vederea îndeplinirii
responsabilităţilor sale
 colaborarea poate avea forma:
 solicitarea unei informaţii
 solicitarea de realizare a unei sarcini
 Clasele trebuie să fie nici prea mari şi nici prea mici,
fiecare având o singură responsabilitate mai
importantă.
4. Carduri CRC. Elemente de baza
Cardurile CRC pot fi o alternativa la diagrama de clase
Un card CRC (Class Responsability Colaborator) permite
reprezentarea:
 Unei clase de obiecte
 A responsabilităţilor ei
 A interacţiunilor/colaborarilor ei
Crearea unui card CRC presupune parcurgerea iterativă a
următorilor paşi:
 Identificarea claselor
 Identificarea responsabilităţilor – orice o clasă ştie sau face
 sunt necesari atunci când o
ceva
clasă nu are suficiente informaţii
 Definirea colaboratorilor
pentru a îndeplini o
responsabilitate
 este o altă clasă care poate
oferi funcţionalitatea lipsă
 definirea se face pentru fiecare
responsabilitate în parte
4. Carduri CRC. Exemplul 1
 clasa Student are ca responsabilitate înregistrarea unui
student la un seminar (Enroll in a seminar)
 are nevoie să ştie câte locuri sunt disponibile la un curs şi
apoi să fie înregistrat
 pentru a-şi îndeplini responsabilitatea, Student:
 are nevoie să ştie dacă mai sunt locuri la
seminarul respectiv
 dacă da, să adauge studentul în lista seminarului
 în concluzie, clasa Student are nevoie sa
interacţioneze/colaboreze cu clasa Seminar, care va fi
inclusă în zona destinată colaboratorilor
4. Carduri CRC. Exemplu 2
Un format extins al
cardului CRC
4. Carduri CRC. Role playing
 Cardurile CRC pot fi utilizate in simulari role-playing
 Aceste simulari sunt utile in verificarea claritatii si
completitudinii elementelor din modelul structural
 Pot fi descoperite clase, atribute, operatii sau relatii
omise
 Simularile role-playing presupun parcurgerea urmatorilor
pasi
 Alegerea scenariului de simulat pe baza descrierilor
detaliate a cazurilor de utilizare sau a diagramelor de
activitati
 Identificarea rolurilor relevante – un actor sau un
obiect (card CRC)
 Efectuarea simularii – fiecare membru al echipei va
juca unul din rolurile stabilite anterior
Webografie

[Link]

[Link]

lass-diagrams

[Link]

[Link]

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