10_uml

Upload: aleksandar-micic

Post on 03-Mar-2016

57 views

Category:

Documents


0 download

DESCRIPTION

Osnove UML

TRANSCRIPT

  • 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