curs 4 reprezentari abstracte
TRANSCRIPT
Unified Meta Language
Ce este de fapt UML?
Definitie: (OMG)
" Unified Modeling Language (UML) reprezinta un limbaj grafic pentru vizualizarea, specificarea, dezvoltarea si documentarea componentelor unei unui sistem software de dimensiuni medii sau mari.
UML ofera semantici si notatii pentru
1. User Interaction/Use Case Model
2. Interaction / Communication Model
3. State / Dynamic Model
4. Logical / Class Model
5. Physical Component Model
6. Physical Deployment Model
Procesul dezvoltare a unei aplicatii
Specificarea Cererilor
Analiza sistemului
Proiectarea sistemului
Implementarea sistemului
Testarea sistemului
Instalarea sistemului
Intretinerea sistemului
Modelele sunt folosite pentru a furnizadescrierile abstracte
Modelul sistem:Modelul obiect: Modelul functional: Modelul dinamic:
Modelul task-urilor:Harta PERT: Planificarea: Harta organizationala:
Problemele Modelului:
Relatiile modelului Modelul sistemului
Probleme ModelModelul task-urilor
Problema modelariiModelelesistemului
Problemele Modelului Modele Task-urilor
Harta PERT
Diagrama Gantt
Hartaorganizationala
Constrangeri
Probleme
Propuneri
Argumente
Modelul Obiect
ModelulFunctional
Modelul dinamic
class...class...class...
Cod
Pro Contra
Proiectare normala
Analiza coduluiExistent(ReverseEngineering)
O diagrama este o reprezentare vizuala intr-un model
Diagrama de Deployment
Diagramause-case
Diagrama deSecventa
Diagrama deStare
ComponentDiagramsComponent
DiagramsDiagrama deComponente
Modele
Diagrama deObiect
Diagrama deColaborare
Diagrama deActivitate
Diagrama deDiagrama de
Diagrama deClasa
Entitati in UML
Exista patru tipuri de entitati in UML:
Entitati structurale
Entitati comportamentale:
Entitati pentru grupare:
Entitati pentru observatii:
Entitati structurale ale UML Sunt partea cea mai “statica” a unui model
indiferenta daca acesta este la nivel fizic sauconceptual
Descriere logica:
Descriere specificatii:
Descriere proces:
Descriere implementatare:
Clasa O clasa: descrierea unui set de obiecte care au
in comun aceleasi atribute, operatii, relatii sisemantici
Pentru reprezentare se foloseste un dreptunghi
Professor
- name- employeeID : UniqueId- hireDate- s tatus
- discipline- maxLoad
+ submitFinalGrade()+ acceptCourseOffering()+ setMaxLoad()+ takeSabbatical()
Attribute
Operatii
OBIECTE
19
Diagrama de clase
Prezinta un set de clase, interfete si colaborariprecum si relatiile dintre acestea.
Ceas Simplu
Buton afisaj Baterie timp
Se observa ca are 2 (obiecte) butoane, un afisaj 2 baterii etc
2 1 2 1
1 1 1 1
Diagrame de tip clasă Atribute/metode
Atributele Nume Vizibilitate
(+)public – (-)private – (#)protected
Operaţiile/Metodele Nume Vizibilitate
21
Obiectul
UN obiect este o instanta a unei calse
Fiecare obiect apartine unei sinugure clase
In UML numele instantelor sunt subliniate
CatelulMeu:Catel
supercatelul:WebCatel
Catel
WebCatel
<<instanceOf>>
<<instanceOf>>
Tub
Piramida
Cub
Shape
DesenezMutScalezRotesc
<<interface>>
Realizarea legaturilor
Interfata O interfata este o colectie de operatii care
specifica serviciile unei clase sau componente
Tub
Piramida
Cub
Forma
DeseneazaMutaScaleazaRoteste
<<interface>>
Tub
Piramida
CubForma
Clasic
Reprezentarea interfetelor
Acadea
Colaborari In contextul arhitecturii sistemului o colaborare permite
crearea unei grupari care va contine atat aspecte statice cat siaspecte dinamice sub un nume comun
IesireIesire
25
Diagrame Use Case
Ceas de mana
Citeste ora
Potriveste ceasul
Schimba bateria
Utilizator ceasReparator ceasuri
26
ActoriModeleaza o entitate externa care comunica cu sistemul si pot fi
Utilizator
Sistem extern
Mediu fizic
27
Use Case
De obicei reprezinta o clasa de functionalitatioferite de sistem ca un sir de evenimente
Un caz de utilizare consta in
Nume unic
Actori implicati
Conditii initiale
Zirul de evenimente
Conditii de iesire
Necesitati speciale
28
Exemplu Use Case
Nume:Cumpara bilet ticket
Actor implicat:Pasager
Conditii initiale:Pasagerul sta in fata automatului de bilete.
Pasagerul are destuibani pentru a cumparabiletul.
Sir de evenimente1. Pasagerul specifica ruta dorita2. Automatul de bilete afiseazacostul calatoriei pe acea ruta3. Pasagerul insereaza cash saucard in automat (e presupune caeste disponibila suma necesara) 4. Automatul de bilete da rest (daca e cazul).5. Automatul de bilete da biletul.
29
Relatia <<extend>>
Pasager
Cumpara bilet
Nici o comanda
<<extend>>
Neschimbat
<<extend>>indisponibil
<<extend>>
Abandoneaza
<<extend>>
30
Relatia <<include>>
Pasager
Cumpara bilet simplu
Cumpara abonament
Nu am resr
<<extend>>
Abandoneazal
<<extend>>
<<include>>
Primeste banii
<<include>>
Clasa activa O clasa activa este acea clasa in care obiectele detin
mai multe procese sau fire de executie si ca atare pot initia un control al unei activitati.
Gestionare de evenimente
suspenda()
Goleste_tampon()
Componenta Este o parte modulara a proiectarii unui sistem care
ASCUNDE implementarea ei in spetele unui set de INTERFETE EXTERNE
OrdinDePlata
Diagrama de componente
component.java
ImageObserver
image.java
Arata organizarea precum si relatiile intre componentesoftware inclusiv cod sursa, cod obect sau cod executabil.
Aceste diagrame contin:
Componente pachet
Componente
Interfete
Relatii intre entitatile implicate
Diagrama de Componente
Diagrama de componente
Artefact
Reprezinta o parte fizica a sistemuluicare poate fi schimbata si contineinformatie la nivel fizic .
Security.dll
<<artifact>>
Nodul Reprezinta un element fizic care exista pe durata
executiei si reprezinta o resursa de calcul.
Nod #1
<<Nod>>
Diagrama de functionare/instalare (deployment) Prezinta configurarea in timpul executiei a nodurilor de calcul
precum si a componenentelor sistemului software care suntinstalate pe acestea
Diagrame de instalare
Entitati comportamentale ale UML Se mai numesc si “verbele” modelului
UML.
Reprezinta cea mai dinamica a acestuia
Interactiunea O interactiune reprezinta un comportament care
contine un set de mesaje schimbat intre un set de obiecte intr-un context particular asociat unui scopspecific.
afisaj()
Diagrama de Interactiune Prezinta o interactiune ce consta dintr-un set de
obiecte si relatiile intre ele inclusiv mesajeleschimbate intre acestea
Diagrama de secventa Diagrama de colaborare
43
Diagrame de secventa
Sunt foloste in faza analizei specificatiilor sistem
Pentru a clarifica/rafina descrierele de tip use-case
Pentru a gasi obiecte suplimentare (“participating objects”)
Mai sunt folosite si in cazul proiectarii sistemuluipentru a imbunatati interfetele subsistemelor
Diagrama de secventa
1: doSomething()
ObjectClient ObjectFurnizor
Mesaj
:Client :Furnizor
Control
Mesaj reflexiv
Durata de viataa Objectului
1.1: doAnotherthing()
Numarul secventei
Pune accentul pe ordinea in timp a mesajelor
45
Diagrama de secventa – pt Setare Timp
:Ceas Simplu
:Utilizator Ceas
:Ecran :Timp
apasButon1() Clipesc orele()
apasButon1() Clipesc Minutele()
apasButon2() incrementare Minute()
refresh()
ApasButon1 si 2() Memoreza noua setare()
Opreste clipitul()
Exemplu de mecanism de desenare in applet
: Thread : Toolkit : ComponentPeer
target : HelloWord
client
run( )run( )
callbackLoop( )
handleExpose( )paint( )
Diagrama de colaborare Pune in evidenta organizarea obiectelor care
participa intr-o interactiune
1: faCeva()
Object Client Object Furnizor
Mesaj
Legatura
:Client :Furnizor
Diagrama de colaborare
Diagrama de activitate
Stare initiala
Stare actiune
concurrent fork
concurrent join
Selectare site
Fa treaba cumpara
Expresie verificare[ inacceptabil ]
[ else ]
Calcul oferte
Terminaconstructia
Stare finala
decizie
50
Diagrame de stare
Descriu comportamentul unui obiect individual (e.g. un automat finit) care se refera la numarulfinit de stari prin care obiectul poate treceprecum si tranzitiile dintre acestea.
Starile sunt reprezentate prin oval-uri
51
Diagrame de stare
Ora Clipeste Incrementare Ore
Minutele Clipesc IncrementareMinute
Secondele Clipesc Incrementare SecundeOprire Clipire
Butonul 2 apasat
Butonul 2 apasat
Butonul 2 apasat
butoanele1&2 apasate
butoanele1&2 apasate
butoanele1&2 apasate
Butonul 1 apasat
Butonul 1 apasat
superstate
substate
add student /numStudents = numStudents + 1
Open
Unassigned
Assigned
H
add a professor
Closed
Cancelled
do: Send cancellation notices
Full
Committed
do: Generate class roster
closeRegistration
close
remove a professor
close[ numStudents < 3 ]
[ numStudents = 10 ]
closeRegistration[ numStudents >= 3 ]
close[ numStudents >= 3 ]
closeRegistration [ has Professor assigned ]
close
/ numStudents = 0
remove student / numStudents = numStudents - 1
cancelcancel
Diagrama de stare
53
Diagrame de activitate
O diagrama de activitate descrie sistemul in termende activitati
Acestea sunt prezentate ca stari care reprezintaexecutia unui set de operatii
54
Diagrame de activitate
Exemplu: Diagrama pentru gestiunea unui incident
Initiaza un nouraport pentruincidentul in curs
Rezervaresurse
Condu resurselepentru rezolvare
Document Incident
Inchide siarhiveaza raport
Gruparea entitati in UML Un pachet (package) este un mecanism de uz
general folosit pentru a organiza diverse entitati in grupuri
Reguli Economice(Business rules)
Pachete
Entitatile structurale, comportamentale si chiar alteentitati de grupare pot fi plasate ntr-un container
A(din pachet A)
B(din pachet B)
Relatie de dependenta
Pachet A Pachet B
Abstractii de baza
Applet
HelloWorld
Panel
Object
Component
Container
ImageObserver
applet
awt
lang
java
HelloWorld
Entitati aditionale - Note
Entitatile folosite in note si observati sunt o componenta explicativa a modelelor UML (cam cacometariile in cod) si pot avea orice grad de detalilerenecesar contextului (de la simpleremarci, clarificarisau chiar descrieri complete)
Una din acestea vafi executata
Relatii intre entitatile UML Exista patru tipuri de relatii in UML:
Asocierea Dependenta Generalizarea si Realizarea
Ce este asocierea?O relatie semantica dintre doua sau mai
multe clase care specifica legaturi intreinstantele lor
Curs
<<entity>>
Student
<<entity>>
Orar
<<entity>>
Profesor Universitate
AngajatorAngajat
Nume roluri
Lucreaza pentru
Associere
Numele asocierii
Asocierea - exempluclass CatalogueEntry {private string name;private int number;private double cost;public double getCost () {
return cost; }
}class Part {
private CatalogueEntry entry;
public double cost () {return entry.getCost();
}}
CatalogueEntry screw= new CatalogueEntry(“screw”, 28834, 0.02);
Part screw1 = new Part(screw) ;
screw1.cost();
: Part : Part
: CatalogueEntry
name = “screw”number = 28834cost = 0.02
Descrie Descrie
O legatura reprezinta o conexiune intre obiecte
O legatura specifica o cale de-a lungul careia acesta poatetrimite un mesaj catre alt obiect (sau catre el insusi)
Asocierea Este o relatie structurala care descrie un set de legaturi
: CatalogueEntry
name = “screw”number = 28834cost = 0.02
: PartClientcost()
Aflarea costului unuei parti
getCost()
Exemplu de asociere
CatalogueEntry
- name - number - cost
+ cost()
Part
+ getCost() 1*
O legatura poate fi vazuta si ca o instanta a uneiasocieri
Caracteristicile unei asocieri
Persoana Companienn
-angajator-angajat
treaba nn
Numele asocierii
Numele Rolurilor
Numele: descrie natura relatiei respective
Caracteristicile unei asocieri Navigare: In cazul unei asocieri de clase este posibila
“navigarea” din obiectele unei clase catre obiectele celeilalteclase
Multiplicitate reprezentare
2..4
0..1
1..*
0..*
1
*
2, 4..6
Universitate Profesor1 0..*
Multiplicitatea
Navigare
Nespecificat
Eaxct una
Zero sau maimulte (nelimitat)
Una sau maimulte
Zero sau unu
Cu interval specificat
Mai multe valoridiferite
Student/Masina Orar/Motor
Intreg
Agregare
Parte
Asociere - Agregare O forma speciala de asociere care modeleaza o
relatie intreg parte intre un agregat (un intreg) sipartile sale componente
Intreg
Composition
Parte
Asociere - Compunerea O forma de agregare cu o forma de proprietate
(partile nu pot exista fara intreg)
Student Schedule
Asocierea - Clase asociate In cazul asocierii intre doua clase chiar asocierea
poate avea ea insasi proprietati
Companie Persoana* 1..*
-angajator -angajat
Munca
-salariu
+ getSalariu()
Asociere - Asociere clase
Decizie de proiectare
Companie Persoana*1..*Munca
-salariu
+ getSalariu()
1 1
Companie Persoana* 1..*
-angajator -angajat
Munca
-salariu
+ getSalariu()
Asociere - autoasociere
Curs
Materii pregatitoare
0..*
Scoala
Student
1..n
n
1..n
n
membru
Curs
nn
Participa Profesor1..nn 1..nn
prezentat
Departmente
1 1..n1
are
1..n
1..n1..n
1..n
1..n
Asignat la
0..10..1
0..1
-sef
Associere - Exemplu
Client Furnizor
Pachet
PachetClient PachetFurnizor
Client Furnizor
Clasa
Relatie de dependenta
Relatie de dependenta
Componenta
Dependenta O relatie intre doua elemente unde o schimbare
asupra unuia dintre ele s-ar putea sa cauzeze o modificare si in celalalt
Dependenta– Exemplu
Profesor Curs
class Profesor {public void preda(Curs c) { ……..}
……………..}
class Profesor {public void preda() { Curs c = new Curs(); ……..}
……………..}
Generalizare Se referea la o relatie intre clase in care o clasa
are comun structura sau / si comportamentuluneia sau mai multor clase
Angajat
ManagerInginer
Relatie de generalizare
Account
balancenamenumber
Withdraw()CreateStatement()
Checking
Withdraw()
Savings
GetInterest()Withdraw()
Super-clasa(parinte)
Sub-clase
Relatiegeneralizare
Stramos
Descendenti
Mostenire simpla O clasa mosteneste de la alta
Aeroplan Elicopter Lupf Cal
Zburatoare Animal
Pasare
Mostenire multipla
Mostenire multipla O clasa poate mosteni caracteristici de la mai
multe clase simultan
Realizarea UN clsificator care reprezinta un contract pe care
alt clasificator se obliga sa il indeplineasca
Shape
Tub
Piramida
Cub
Shape
draw()move()scale()rotate()
<<Interface>>
Tub
Piramida
Cub
ReprezentareCanonica(reprezentarestandard cu clase)
Reprezentareeliptica/iconica(“lollipop”)
Relatie de Realizare
Realizare
Circle
Shape
interface Shape {public void draw() ;
}
class Circle implements Shape {public void draw() {…..}
……}
class Shape {
public:virtual void draw() = 0 ;
};
class Circle : public Shape {
public:
void draw() {…..}……
};
UML jokes