10_uml
DESCRIPTION
Osnove UMLTRANSCRIPT
-
Objektno orijentisano
programiranje: UML
-
Objektno orijentisano programiranje
ta je UML?
Unified Modeling Language (UML) je metodologija za razvoj i specifikaciju softvera
UML standard su 1995. razvili Booch i Rumbaugh Standard je iroko prihvaen i od proizvoaa
i od programera
Postoje brojni programi koji podravaju UML dijagrame
o Rational Rose (IBM, komercijalan)
o ArgoUML (besplatan, open-source) i Poseidon
(komercijalna verzija)
2
-
Objektno orijentisano programiranje
UML metamodel
UML metamodel, tj. skup definicija, preciznom sintaksom opisuje znaenje svih elemenata koji se koriste za vizuelno modeliranje, kao i relacije izmeu elemenata
o Na primer, UML metamodel precizno definie ta je klasa, koji su njeni atributi i operacije, i kakva je veza izmeu njih
UML specifikacija definie dijagrame i elemente koji se koriste za njihovo konstruisanje
i nain kako se oni proiruju
UML podrava devet tipova dijagrama
3
-
Objektno orijentisano programiranje
UML dijagrami
Use case(dijagram korienja) Activity (dijagram aktivnosti) Class (dijagram klasa) Component (dijagram komponenti) Package (dijagram paketa) Object (dijagram objekata) Statechart (dijagram stanja) Sequence (dijagram sekvenci) Collaboration (dijagram saradnje)
4
-
Objektno orijentisano programiranje
Use case diagrami
Use Case je skup dijagrama i tekstualnih opisa koji dokumentuju kako se oekuje da e korisnik saraivati sa sistemom
Model korienja usredsreen je na kritine faktore za uspean rad sistema, u smislu funkcija koje su korisnicima potrebne da bi radili sa njim
Korisnici kojima je potrebna odreena funkcija postaju tipini sluajevi za modeliranje naina njenog funkcionisanja
5
-
Objektno orijentisano programiranje
Use case dijagrami
Dijagram sluajeva korienja sastoji se od pet veoma jednostavnih grafikih komponenata:
o Sistem (system)
o Uesnici (actor)
o Sluajevi korienja (use case)
o Veze (associations)
o Zavisnosti (dependencies)
Cilj dijagrama jeste da obezbedi uopteno objanjenje veza izmeu sistema i spoljanjeg sveta
Dijagram korienja je veoma generalizovan (tj. daje samo povrnu sliku sistema, kao crne kutije)
6
-
Objektno orijentisano programiranje
Use case dijagrami
7
-
Objektno orijentisano programiranje
Uesnik (actor)
Korienje uloga pomae pri usredsreivanju na nain korienja sistema, a ne na trenutnu organizaciju kompanije u funkcije i odgovornosti
Da bi se prepoznali uesnici, treba prepoznati koje uloge imaju ljudi tokom korienja sistema
8
-
Objektno orijentisano programiranje
Kada treba koristiti use case?
Use case opisuje zahteve koji se predstavljaju pred sistem, a ne opisuje kako oni treba da se koriste
Dijagram korienja treba da modelira samo funkcije sistema koje uesnik (actor) treba da vidi
o Na primer, ako sistem treba da snimi podatke u bazu,
korisnik to ne treba da vidi
o Use case eventualno treba da prikae poruku da je funkcija snimanja podataka uspeno izvrena, a ne i da prikazuje detalje o samom smetanju podataka u bazu
9
-
Objektno orijentisano programiranje
Asocijacije
Asocijacija predstavlja nain kako uesnik komunicira sa sluajem korienja
Veina asocijacija su dvosmerne (tj. uesnik pristupa sluaju korienja, a on mu daje uslugu)
10
-
Objektno orijentisano programiranje
Zavisnosti
Kada jedan Use case poziva drugi, takva zavisnost se crta kao isprekidana linija od using ka used sluaju i oznaava stereotipom
Zavisnost znai da bi jedan use case mogao da trai pomo od drugog, i smer strelice zavisnosti je obrnut od
11
-
Objektno orijentisano programiranje
Generalizacija
Modelira oo koncept nasleivanja izmeu sluajeva korienja i uesnika
Predstavlja se punom linijom od izvedenog pojma ka osnovnom, sa strelicom na kraju (strelica je uvek
kod osnovnog objekta)
12
-
Objektno orijentisano programiranje
Use Case opisi
Dijagram korienja je suvie koncizan da bi opisao oekivanja od sistema, pa se dopunjuje tekstualnim opisima, koji bi trebalo da objasne ta korisnik oekuje od sistema
Elementi koji se koriste u opisima nisu standardizovani, ali obino sadre:
o Kako poinje sluaj korienja
o Neophodne preduslove
o Opis interakcije sa sistemom
o Opis mehanizama koji prouzrokuju prestanak izvravanja sluaja korienja
13
-
Objektno orijentisano programiranje
Dijagram klasa
Dijagram klasa (class diagram) je najpoznatiji i najee korien UML dijagram
Slui kao najvanija referenca tokom projektovanja softvera, a moe se generisati i na osnovu postojeeg koda, tehnikom reverse engineering
Svi ostali UML dijagrami zapravo su pomono sredstvo za otkrivanje informacija o tome kako treba
da izgleda dijagram klasa
14
-
Objektno orijentisano programiranje
Objektni model
Objektni model (object model) se ponekad koristi kao sinonim za dijagram klasa, a zapravo je re o skupu dijagrama na kojima su opisani objekti klasa
UML ne definie dijagram objekata, ve se u tom sluaju zapravo radi o dijagramu klasa koje su predstavljene svojim objektima
15
-
Objektno orijentisano programiranje
Dijagram klasa
Dijagram klasa predstavlja klase, njihove komponente i veze izmeu objekata razliitih klasa
Informacije o tome na dijagramu predstavljaju se pomou:
o Atributa (attributes)
o Operacija (operations)
o Stereotipova (stereotypes)
o Svojstava (properties)
o Asocijacija (associations)
o Nasleivanja (inheritance)
16
-
Objektno orijentisano programiranje
Dijagram klasa
Dijagram klasa je statiki prikaz elemenata aplikacije, kao tehniki crte ureaja
Ne omoguuje da se vidi kako e se program izvravati; ponaanje programa i interakcija izmeu delova prikazuje se drugaijim dijagramima
17
-
Objektno orijentisano programiranje
Dijagram klasa
Simbol klase sastoji se iz tri odeljka: o ime
o atributi (podaci-lanovi)
o operacije (funkcije lanice)
Odeljci klase prikazuju se prethodno navedenim redosledom, a redosled atributa i operacija nije
vaan
UML dozvoljava i definisanje dodatnih odeljaka
18
-
Objektno orijentisano programiranje
Modeliranje atributa klase
Za svaki atribut u dijagramu klase mora da bude zadata vidljivost
o Public (+)
o Private (-)
o Protected (#)
o Package (~)
Atribut se obino definie na sledei nain: vidljivost ime_atributa : tip_podataka = default_vrednost {ogranienja}
19
-
Objektno orijentisano programiranje
Modeliranje atributa klase Vidljivost, ime atributa i tip podataka su obavezni
20
Opis elementa atributa Primer elementa atributa
Dodelite naziv atributu kompanija
Dodajte tip podataka atributa kompanija:char*
Dodajte default vrednost za atribut, ako je ima kompanija:char* =
Uvedite ogranienja za tip atributa kompanija:char* = {od 1 do 30 znakova}
Dodajte informacije o tipu podataka koji se moe koristiti unutar zagrada
kompanija:char* = {od 1 do 30 znakova ukljuujui slova, razmake i znakove interpukcije; ne smeju se koristiti specijalni
znaci}
Podesite vidljivost atributa (ovde je dodeljena
vidljivost private stavljanjem znaka ispred atributa)
- kompanija:char* = {od 1 do 30 znakova ukljuujui slova, razmake i znakove interpukcije; ne smeju se koristiti specijalni znaci}
-
Objektno orijentisano programiranje
Modeliranje operacija klase
Operacije se modeliraju sintaksom vidljivost ime_operacije ( ime_argumenta : tip_podataka
{ogranienja}, ...) : return tip_podataka {ogranienja}
Ime operacije, vidljivost, imena i tipovi argumenata (ako ih ima) i povratni tip (ako postoji) su obavezni
21
-
Objektno orijentisano programiranje
Modeliranje operacija klase
22
Opis elementa operacije Primer elementa operacije
Dodelite naziv operaciji ukupanIznosNarudzbine
Definiite parametre; tip podataka za argument u ovom sluaju je klasa Narudzbina
ukupanIznosNarudzbine (narudzbina:Narudzbina)
Definiite povratni tip podataka (ovde je to klasa Valuta, navedena iza dvotake)
ukupanIznosNarudzbine (narudzbina:Narudzbina) :
Valuta
Prepoznajte i opiite sva ogranienja ukupanIznosNarudzbine (narudzbina:Narudzbina) : Valuta {ukupan iznos je zbir pojedinacnih stavki
umanjen za popust. Svaka stavka je proizvod
jedinicne cene i kolicine.}
Podesite vidljivost operacije (UML oznaava public vidljivost znakom +)
+ ukupanIznosNarudzbine (narudzbina:Narudzbina)
: Valuta {ukupan iznos je zbir pojedinacnih stavki
umanjen za popust. Svaka stavka je proizvod
jedinicne cene i kolicine.}
-
Objektno orijentisano programiranje
Kompletna specifikacija klase
23
-
Objektno orijentisano programiranje
Asocijacije (veze) izmeu klasa
Asocijacije definiu kako objekti razliitih klasa sarauju
Dodeljuju im se imena da bi se opisalo emu veza slui (imena su obino glagoli)
Mada nije uvek obavezno, preporuljivo je strelicama oznaiti smer veze
24
-
Objektno orijentisano programiranje
Kardinalnost asocijacije
Kardinalnost (multiplicity) definie broj objekata koji uestvuju u asocijaciji
Kardinalna vrednost mora biti dodeljena svim klasama u asocijaciji
25
-
Objektno orijentisano programiranje
Kardinalnost asocijacije
Izraava se kao opseg celobrojnih vrednosti minimum...maksimum
Vrednosti razdvojene sa .. znae opseg o 1..3 znai od jedan do 3 (ukljuujui 1 i 3)
Kada se koristi samostalno, zvezdica (*) znai 0 ili vie (tj. bez donjeg i gornjeg ogranienja)
Kada se koristi u opsegu, znai nepostojanje gornje granice
o 1..* znai jedan ili vie
Vrednosti razdvojene zarezima znae nabrajanje
26
-
Objektno orijentisano programiranje
Ogranienja asocijacije
Ako postoji vie ogranienja, sva se dodaju unutar istih zagrada
27
-
Objektno orijentisano programiranje
Uloge u asocijaciji
Postoje sluajevi kada je ime asocijacije teko odrediti
o npr. kojim glagolom se moe opisati veza izmeu deteta i roditelja?
Umesto imena asocijacije moe se navesti uloga (role), koja opisuje kako objekat uestvuje u asocijaciji
Uloge generiu kod, za razliku od naziva asocijacija
28
-
Objektno orijentisano programiranje
Uloge u asocijaciji
Uloge se mogu navoditi na jednom, oba ili ni na jednom kraju asocijacije
29
-
Objektno orijentisano programiranje
Refleksivne asocijacije
Refleksivna asocijacija je sluaj kada su objekti iste klase u meusobnoj vezi
Koriste uobiajenu notaciju za asocijaciju, jedino to oba kraja linije asocijacije pokazuju na istu klasu
30
-
Objektno orijentisano programiranje
Klasa asocijacije
Klasa asocijacije kapsulira informacije o asocijaciji, a sa njom se povezuje isprekidanom linijom
31
-
Objektno orijentisano programiranje
Agregacija i kompozicija
32
Agregacija i kompozicija su specijalni tipovi asocijacije
-
Objektno orijentisano programiranje
Agregacija
Objekti koji uestvuju u agregaciji su grupisani zajedno da bi se napravio sloeniji objekat
Agregacija se oznaava linijom sa rombom na strani agregatne klase (tj. sloenije klase)
33
-
Objektno orijentisano programiranje
Kompozicija
Kompozicija se koristi za agregacije u kojima postojanje delova zavisi od postojanja agregata
Agregat kontrolie nastajanje i unitavanje svojih delova
Ovaj jai oblik agregacije oznaava se crvim rombom
34
-
Objektno orijentisano programiranje
Generalizacija (nasleivanje)
Generalizacija nije asocijacija U UML modelu generalizacija i asocijacija tretiraju
se razliito
o Asocijacija definie pravila veza izmeu objekata
o Nasleivanje povezuje klase
Poto nije asocijacija, nema potrebe da se navode kardinalnost, uloge i sl.
35
-
Objektno orijentisano programiranje
Nasleivanje
Oznaava se linijom usmerenom od izvedene ka osnovnoj klasi (tj. strelica je na strani osnovne klase)
Diskriminatori se koriste za opis razlike izmeu osnovne i izvedene klase; stavljaju se na liniju
izmeu osnovne i izvedenih klasa
36
-
Objektno orijentisano programiranje
Dijagram objekata
Dijagram objekata modelira podatke o specifinim entitetima, za razliku od dijagrama klasa koji
modelira pravila za tipove entiteta
Sastoji se od objekata i veza (prave se na osnovu asocijacija)
Definie se kao ime_objekta: ime_klase Ako se navede samo :ime_klase, radi se o
anonimnom objektu
37
-
Objektno orijentisano programiranje
Dijagram objekata
Svim atributima konkretnog objekta u dijagramu dodeljuju se vrednosti
Poto su operacije (metode) klase zajednike za sve objekte te klase (za razliku od atributa), one se
izostavljaju u dijagramu objekata jer ne bi uvele
nikakve nove informacije
Za razliku od asocijacija u dijagramu klasa koje imaju kardinalnost, objekti se povezuju vezama koje
nemaju kardinalnost jer se radi o pojedinanim entitetima
38
-
Objektno orijentisano programiranje
Dijagram objekata
39
-
Objektno orijentisano programiranje
Dijagram aktivnosti
Opisuje logike procese, tj. funkcije implementirane u kodu
Svaki proces opisuje redosled koraka i odluka o tome kada se ti koraci izvravaju
Dijagram aktivnosti je zapravo poboljana verzija dijagrama toka (flowchart)
Dijagram aktivnosti sadri sve logike konstrukcije podrane u veini programskih jezika i na osnovu njega se moe generisati programski kod
40
-
Objektno orijentisano programiranje
Dijagram aktivnosti
Dijagram aktivnosti sadri niz aktivnosti povezanih pomou prelaza (transitions) koji se obeleavaju linijama sa strelicama
Prelaz se obino deava kada se neka aktivnost zavri
41
-
Objektno orijentisano programiranje
Odluke Oznaka za odluku je romb, ako donoenje odluke
ne zahteva nikakvu obradu, odnosno zaobljeni
pravougaonik ako su tek po zavretku aktivnosti dostupne informacije potrebne za odluku
42
-
Objektno orijentisano programiranje
Spajanje, konkurentnost
43
-
Objektno orijentisano programiranje
Dijagram aktivnosti
44
-
Objektno orijentisano programiranje
Dinamiki UML prikazi Za razliku od dijagrama klasa i objekata koji su
statiki, dijagram sekvenci je dinamiki, a modelira saradnju izmeu objekata
Dinamiki prikazi ne koriste se tako esto kao dijagrami klasa, zato to nisu sva ponaanja dovoljno sloena da bi zahtevala predstavljanje pomou dijagrama
UML podrava tri tipa dinamikih dijagrama: o Dijagram sekvenci
o Dijagram kolaboracije
o Dijagram stanja
45
-
Objektno orijentisano programiranje
Dijagrami sekvenci i kolaboracije
Dijagrami sekvenci i kolaboracije ilustruju interakcije izmeu objekata
Ove dve vrste dijagrama su veoma sline, nude samo razliite perspektive
Pravljenje dijagrama sekvenci je lake ako su prethodno napravljeni dijagrami sluajeva korienja i klasa
46
-
Objektno orijentisano programiranje
Dijagrami sekvenci
Svi dijagrami sekvenci modeliraju se na nivou objekata, a ne sa klasama da bi mogli da prikazuju
scenarije u kojima se koristi nekoliko instanci iste
klase
Dijagram sekvenci koristi tri osnovna elementa: o objekte
o poruke (predstavljaju se strelicama)
o trajanje objekata (predstavljaju se vertikalnim isprekidanim
linijama pored svakog objekta)
47
-
Objektno orijentisano programiranje
Dijagrami sekvenci
Poruka predstavljena punom linijom i punom strelicom zahteva odgovor (sinhrona poruka)
Poruka predstavljena isprekidanom linijom je odgovor (asinhrona poruka)
Poruke se postavljaju horizontalno na linije trajanja objekata, a njihov relativni poloaj odgovara trenucima u kojima se pozivaju
Dijagram sekvenci se ita od vrha ka dnu
48
-
Objektno orijentisano programiranje
Dijagrami sekvenci
49
-
Objektno orijentisano programiranje
Dijagrami sekvenci
Dijagrami sekvenci mogu se poboljati tako da ilustruju aktivaciju i unitavanje objekata i tako da se poruke prilagode
Notacija koja prikazuje da je objekat aktivan je proirenje vertikalne linije trajanja objekta u uski pravougaonik
Uski pravougaonik zove se linija aktivacije ili fokus kontrole
Kada se objekat obrie ili uniti, zavrava se trajanje, a unitavanje se oznaava znakom X
50
-
Objektno orijentisano programiranje
Dijagrami sekvenci
51
-
Objektno orijentisano programiranje
Dijagram kolaboracije
Dijagram kolaboracije je zamena za dijagram sekvenci, ali umesto prikaza poruka tokom vremena
prikazuje poruke na dijagramu objekata
Ove dve vrste dijagrama su toliko sline da neke UML alatke omoguuju automatski prelaz iz jednog u drugi
Dijagram kolaboracije istie razmenjivanje poruka, ali poto ne prikazuje vreme, nema naina da prikae nastajanje i unitavanje objekata
52
-
Objektno orijentisano programiranje
Dijagrami kolaboracije
53
-
Objektno orijentisano programiranje
Dijagram stanja
Dijagram stanja (statechart) opisuje ivotni vek jednog objekta povezan sa dogaajima koji mu menjaju stanje
Stanje objekta mogu da izmene i spoljanji i unutranji dogaaji, ine ga trenutni uslovi u kojima se nalazi, a memorie se u atributima objekta
Dijagram stanja modelira dogaaje koji prouzrokuju prelaze (transitions) iz jednog stanja u drugo
Sa svakim dogaajem povezana je akcija koja menja stanje objekta
54
-
Objektno orijentisano programiranje
Dijagram stanja Crta se na sledei nain:
o Stanje u kome se objekat nalazi kada se kreira oznaava se kao poetno stanje
o Prepozna se dogaaj (ili dogaaji) koji prevode objekat iz poetnog u neko drugo stanje
o Novom stanju se dodeli naziv
o Prelaz iz jednog stanja u drugo povezuje se strelicom koja
se oznaava dogaajem koji prouzrokuje prelaz. Iza naziva prelaza dodaju se kosa crta i ime akcije koja menja
atribute objekta
o Kada se zavri unoenje stanja, ono stanje iz kojeg objekat ne moe da izae oznaava se kao zavrno stanje.
55
-
Objektno orijentisano programiranje
Dijagram stanja
56
-
Objektno orijentisano programiranje
Dijagram stanja
Odeljak internih prelaza stanja sadri informacije o akcijama i aktivnostima specifinim za to stanje
Aktivnosti su procesi koji se odvijaju unutar stanja, ali ne menjaju stanje objekta
Unutar stanja, aktivnosti se modeliraju korienjem rei Do: iza koje se navodi jedna aktivnost ili vie njih
57
-
Objektno orijentisano programiranje
Dijagram paketa
Paketi su UML metod za organizovanje dijagrama projekta
Paket se modelira ikonom direktorijuma UML paketi koriste se za tri namene, a prva je
organizovanje svih dijagrama koji se prave tokom
projektovanja softvera
o Dijagrami se mogu smetati u pakete na isti nain kao to se fajlovi smetaju u razliite direktorijume
58
-
Objektno orijentisano programiranje
Dijagram paketa
Notacija paketa moe se koristiti i za podelu sistema u podsisteme, odnosno dijagrame koji predstavljaju
te podsisteme
Ovaj nain korienja paketa je i najei u alatima za modeliranje
Paket se modelira ikonom direktorijuma, imenom i stereotipom koji ukazuje na nain korienja paketa
Standardizovani UML stereotipi su i
59
-
Objektno orijentisano programiranje
Dijagram paketa
Podsistem () je UML stereotip kojim se oznaava deo sistema
Elementi koji se nalaze u podsistemu paketa standardno su vidljivi samo unutar tog paketa
Model () je UML stereotip slian podsistemu, ali koncentrisan na odreen tip ponaanja u sistemu
60
-
Objektno orijentisano programiranje
Dijagram paketa
Svi tipovi paketa odreuju posebni imenski prostor (namespace) za elemente modela koji se u njima
nalaze
Elementi unutar paketa odreeni su tipom i imenom o Na primer, paket moe da sadri neto to se zove
Proizvod tipa klase i neto to se zove Proizvod a tipa je dijagram stanja
Potpuna kvalifikacija imena elementa je notacija paket :: element, na primer Isporuka::Proizvod
61
-
Objektno orijentisano programiranje
Dijagram paketa
Zavisnost izmeu paketa oznaava se isprekidanom linijom, a znai da bar jedna klasa iz prvog paketa mora da komunicira sa barem jednom klasom iz
drugog paketa
Za blie definisanje zavisnosti koriste se stereotipi, npr.
62
-
Objektno orijentisano programiranje
Dijagram paketa
Jedno od najeih korienja paketa jeste da sadre dijagrame, npr. dijagram klasa
63
-
Objektno orijentisano programiranje
Dijagram komponenti
Dijagram komponenti modelira fiziku implementaciju softvera, odnosno distribuciju
aplikacije kroz hardver
Svrha dijagrama komponenti jeste da definie softverske module i njihove meusobne veze
Ikona komponente je pravougaonik sa dva manja pravougaonika sa leve strane i nazivom
64
-
Objektno orijentisano programiranje
Stereotipi komponenti
Stereotipi komponenti vizuelno olakavaju razumevanje uloge komponente u implementaciji
softvera
Neki esto korieni stereotipi su: o (komponeta koja se izvrava u procesoru)
o (biblioteka koju poziva izvrni fajl)
o (baza podataka kojoj pristupa izvrni fajl)
o (podaci ili izvorni kod)
o (dokument, npr. Web strana)
65
-
Objektno orijentisano programiranje
Dijagram komponenti
Zavisnosti izmeu komponenata crtaju se isprekidanom linijom od zavisne komponente prema
onoj od koje zavisi
UML stereotip znai da neki fajl tokom izvravanja postaje neki exe fajl
66
-
Objektno orijentisano programiranje
Dijagram komponenti
67
-
Objektno orijentisano programiranje
UML
Tekua verzija standarda je 2.4 (2011) Detaljnije informacije mogu se nai na adresi
http://www.uml.org/
Knjiga: The Unified Modeling Language User Guide, Grady Booch, James Rumbaugh, Ivar Jacobson, Addison-Wesley, 1999.
68