Objektna Orijentacija

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

UVOD U OBJEKTNO-ORIJENTISANU TEHNOLOGIJU

Objektna orijentacija
Svuda oko nas u realnom svijetu su objekti (ljudi, ivotinje, automobili, kue, igrake, raunari...)
Ljudi i razmiljaju o svijetu oko sebe objektno orijentisano stvari zamiljamo i sjeamo ih se u
obliku objekata (sa odgovarajuim karakteristikama), a ne u obliku skupa obojenih pojedinanih
taaka.
Fantastina mo apstrakcije ljudskog uma prirodnijim ini sliku plae od pojedinanih zrna prijeska
koji je ine, ili ume a ne pojedinanih stabala, ili npr. prelijepe kuice a ne svake pojedinane ciglice
ili crijepa...
Bez obzira da li su objekti oko nas ivi ili neivi, pokretni ili nepokretni svi oni imaju neke
karakteristike:
obiljeja ili atribute npr. boja, veliina, oblik, teina i sl.
odgovarajue ponaanje npr. beba moe da spava, plae, sisa...
npr. automobil moe da se ubrzava, usporava, sudara...
npr. lopta moe da se kotrlja, skae, rotira...
Ljudi ue o objektima analizirajui njihove atribute i njihovo ponaanje (razliiti objekti mogu imati
vie-manje sline atribute i vie-manje se slino ponaati). Lako se uspostavljaju i uoavaju slinosti
izmeu impanze i ovjeka npr. ili voza, automobila i skateboarda, npr.

1
Proceduralno programiranje

Paradigma proceduralnog programiranja koncentrie se na procedure niz akcija.

Ovo je suprotno ovjekovom poimanju realnog svijeta.

Programiranje u jeziku C

Proceduralno algoritamski orijentisano akcijski orjentisano

Jedinica programiranja funkcija

Programeri se koncentriu na pisanje funkcija, funkcije se grupiu u program

Podaci nisu primarni, oni su u funkciji podrke akcijama koje funkcije izvode

Glagoli su ti koji odreuju ta sistem radi i koji e to sistem funkcija biti implementiran

Instance ugraenih tipova (npr. int, char i sl.) nazivaju se promjenljive (varijable)

2
Objektno-orijentisano programiranje (OOP)

Paradigma OOP koncentrie se na objekte i prilagoena je ovjekovom poimanju realnog svijeta.


OOP omoguava prirodniji i intuitivniji nain posmatranja i modelovanja realnog svijeta meusobno
povezanih objekata sa pripadajuim atributima i ponaanjem.
OOP enkapsulira (objedinjava) atribute (podatke) i ponaanje (funkcije) objekata u jedinstvenu
cjelinu.
Objekti imaju sposobnost skrivanja informacija (information hiding) iako objekti mogu
meusobno da komuniciraju kroz odgovarajue interfejse, normalno ne znaju kako su drugi objekti
realizovani jer su detalji implementacije skriveni. Npr. ne moramo znati kako radi dizel motor (a
najvjerovatnije i ne znamo) da mogli da vozimo automobil.

Programiranje u jeziku C++


Objektno orijentisano
Jedinica programiranja klasa (na osnovu koje se kreiraju objekti kao instance klase)
Programeri se koncentriu na kreiranje vlastitih tipova podataka KLASE
Imenice su te koje specificiraju sistem (imenice odreuju klase)
Svaka klasa sadri podatke i funkcije za manipulaciju podacima
Podaci koji se nalaze u klasi nazivaju se podaci lanice (data members)
Funkcije koje se nalaze u klasi nazivaju se funkcije lanice (metode)
Instance korisniki definisanih tipova (klasa) nazivaju se objekti
3
Objektno-orijentisana analiza i dizajn (OOAD)

Pisanje veih OO programa nije lako ba lako "iz ruke", jednostavno kucanjem koda "iz glave".

Praksa pokazuje da je za razvoj softvera neophodna dobra i kvalitetna analiza domena i dizajn ciljnog
sistema. Ako je to OO onda govorimo o OOAD.

OOAD je termin kojim se oznaava proces kojim se analizira problem i razvija OO pristup za njegovo
rjeavanje. Mnogo je metodologija razvijeno da bi se postigla to uspjenija OOAD.

Od posebnog znaaja je UML (Grady Booch, James Rumbaugh, Ivar Jacobson 90ih godina prolog
vijeka), kao jedinstveni jezik modelovanja koji ima veoma bogatu OO (ali ne samo OO) notaciju.

4
CASE STUDY SIMULACIJA LIFTA

Cilj: Ovladati OOAD (UML) na nekom realnom primjeru.

1. PROBLEM

Neka kompanija namjerava da gradi dvospratnu zgradu koji eli opremiti odgovarajuim liftom. Prije toga, cilj
im je da razviju u C++ OO softverski simulator koji treba da im pomogne u odluci da li e lift zadovoljiti
njihove potrebe.
Simulator treba da ima sat - displej koji pokazuje vrijeme rada u sekundama.
Simulator treba da ima ugraen mehanizam (dispeer) koji moe sluajno da definie dva trenutka:
Trenutak 1: neka osoba na prvom spratu poziva lift (proizvoljan trenutak cijeli broj 5-20)
Trenutak 2: neka osoba na drugom spratu poziva lift (proizvoljan trenutak cijeli broj 5-20)
U trenutku kad vrijeme rada simulatora dostigne trenutak 1, simulator treba da kreira osobu koja dolazi do
lifta i pritie dugme za poziv lifta (mogue je da obje osobe u istoj sekundi pozovu lift). Kad osoba pritisne
dugme ono zasvijetli kao indikator da je lift pozvan (indikacija se automatski ukljuuje).
Lift poinje dan ekajui zatvorenih vrata na spratu 1. Da bi se tedjela energija, lift se kree samo kad je
potrebno. Sa prvog sprata lift moe da se kree gore, a sa drugog sprata da se kree dolje. Radi
jednostavnosti, lift ima kapacitet maksimalno jedne osobe.
Simulator prije nego kreira osobu na nekom spratu, provjerava da li ve postoji osoba na tom spratu. Ako
osoba ne postoji, kreira novu osobu. Ako osoba vec postoji odgaa se kreiranje nove osobe za jednu
sekundu (liftu se daje prilika da "pokupi" osobu i oisti sprat). Nakon kreiranja osobe, simulator e sluajno
definisati novo vrijeme (5-15 sekundi) nakon kojeg e se pojaviti nova osoba na spratu.
5
Kad lift doe na neki sprat, unutar lifta se oglasi zvonce. Na tom spratu se resetuje dugme kojim je lift pozvan
i automatski iskljuuje svjetlosna indikacija poziva. Iznad ulaza u lift pali se svjetlo i vrata lifta automatski
otvaraju. Ako je liftom dola neka osoba ona izlazi iz lifta. Ako neka osoba ve eka lift, ona ulazi u lift nakon
to osoba koja je dola liftom izae iz lifta.
Osoba koja ue u lift, pritie dugme (automatski se ukljuuje svjetlosna indikacija) kojim saoptava da je
spremna. Zatvaraju se vrata i lift kree. Kad se lift zaustavi, iskljuie se svjetlosna indikacija.
Kad lift doe na sprat (dovezao je osobu), a na tom spratu ne postoji osoba koja eli na drugu etau (nije bilo
poziva), vrata lifta se zatvaraju, a lift ostaje na tom spratu sve dok se ne pojavi neki poziv.
Radi jednostavnosti, treba pretpostaviti da je ukupno vrijeme od trenutka kad se lift zaustavi na nekom spratu
(otvaranje vrata, izlazak osobe iz lifta, ulazak druge osobe, zatvaranje vrata) jednako nuli. Ovo nije realno, ali
pojednostavljuje problem.
Pretpostaviti da se lift kree pet sekundi izmeu dvije etae.
Simulator preduzima radnje svake sekunde (da li treba kreirati novu osobu, da li lift treba da se zaustavi, da li
treba krene i sl.).
Simulator treba na displeju da prikazuje aktivnosti koje se deavaju u sistemu. To podrazumijeva poruke da je
npr. osoba pritisnula dugme na spratu, da je lift stigao na sprat, da je osoba ula u lift, podatak o trenutnom
vremenu, kao to slijedi u nastavku.
Cilj: REALIZOVATI SIMULATOR KOJI USPJENO MODELUJE OVAJ REALNI SISTEM.

6
Unesite ukupno vrijeme rada simulatora: 25 T: 7
(osoba 1 se na spratu 1 u trenutku 5) LIFT : KRECE SE NAVISE
(osoba 2 se na spratu 2 u trenutku 13)
T: 8
*** POCETAK SIMULACIJE *** LIFT : KRECE SE NAVISE
T: 1
LIFT : STOJI NA SPRATU 1 T: 9
LIFT : KRECE SE NAVISE
T: 2
LIFT : STOJI NA SPRATU 1 T: 10
LIFT : DOLAZI NA SPRAT 2
T: 3 LIFT : RESETUJE SVOJE DUGME
LIFT : STOJI NA SPRATU 1 LIFT : UKLJUUJE SE ZVONCE
SPRAT 2 : RESETUJE SE DUGME
T: 4 SPRAT 2 : PALI SE SVJETLO
LIFT : STOJI NA SPRATU 1 LIFT : OTVARAJU SE VRATA NA SPRATU 2
OSOBA 1 : IZLAZI IZ LIFTA NA SPRATU 2
T: 5 SPRAT 2 : GASI SE SVJETLO
OSOBA 1 : KREIRANA (nova osoba bie u T:16) LIFT : ZATVARAJU SE VRATA NA SPRATU 2
OSOBA 1 : PRITISCE DUGME NA SPRATU 1 LIFT : STOJI NA SPRATU 2
SPRAT 1 : POZIVA LIFT
LIFT : RESETUJE SVOJE DUGME T: 11
LIFT : UKLJUUJE SE ZVONCE LIFT : STOJI NA SPRATU 2
SPRAT 1 : RESETUJE SE DUGME
SPRAT 1 : PALI SE SVJETLO T: 12
LIFT : OTVARAJU SE VRATA NA SPRATU 1 LIFT : STOJI NA SPRATU 2
OSOBA 1 : ULAZI U LIFT NA SPRATU 1
OSOBA 1 : PRITISCE DUGME U LIFTU T: 13
SPRAT 1 : GASI SE SVJETLO OSOBA 2 : KREIRANA (nova osoba bie u T:31)
LIFT : ZATVARAJU SE VRATA NA SPRATU 1 OSOBA 2 : PRITISCE DUGME NA SPRATU 2
LIFT : POCINJE KRETANJE PREMA SPRATU 2 (stize u SPRAT 2 : POZIVA LIFT
10) LIFT : RESETUJE SVOJE DUGME
LIFT : UKLJUUJE SE ZVONCE
T: 6 SPRAT 2 : RESETUJE SE DUGME
LIFT : KRECE SE NAVISE SPRAT 2 : PALI SE SVJETLO

7
LIFT : OTVARAJU SE VRATA NA SPRATU 2 LIFT : POCINJE KRETANJE PREMA SPRATU 2 (stize u
OSOBA 2 : ULAZI U LIFT NA SPRATU 2 23)
OSOBA 2 : PRITISCE DUGME U LIFTU
SPRAT 2 : GASI SE SVJETLO T: 19
LIFT : ZATVARAJU SE VRATA NA SPRATU 2 LIFT : KRECE SE NAVISE
LIFT : POCINJE KRETANJE PREMA SPRATU 1 (stize u
18) T: 20
LIFT : KRECE SE NAVISE
T: 14
LIFT : KRECE SE NANIZE T: 21
LIFT : KRECE SE NAVISE
T: 15
LIFT : KRECE SE NANIZE T: 22
LIFT : KRECE SE NAVISE
T: 16
OSOBA 3 : KREIRANA (nova osoba bie u T:28) T: 23
OSOBA 3 : PRITISCE DUGME NA SPRATU 1 LIFT : DOLAZI NA SPRAT 2
SPRAT 1 : POZIVA LIFT LIFT : RESETUJE SVOJE DUGME
LIFT : KRECE SE NANIZE LIFT : UKLJUUJE SE ZVONCE
SPRAT 2 : RESETUJE SE DUGME
T: 17 SPRAT 2 : PALI SE SVJETLO
LIFT : KRECE SE NANIZE LIFT : OTVARAJU SE VRATA NA SPRATU 2
OSOBA 3 : IZLAZI IZ LIFTA NA SPRATU 2
T: 18 SPRAT 2 : GASI SE SVJETLO
LIFT : DOLAZI NA SPRAT 1 LIFT : ZATVARAJU SE VRATA NA SPRATU 2
LIFT : RESETUJE SVOJE DUGME LIFT : STOJI NA SPRATU 2
LIFT : UKLJUUJE SE ZVONCE
SPRAT 1 : RESETUJE SE DUGME T: 24
SPRAT 1 : PALI SE SVJETLO LIFT : STOJI NA SPRATU 2
LIFT : OTVARAJU SE VRATA NA SPRATU 1
OSOBA 2 : IZLAZI IZ LIFTA NA SPRATU 1 T: 25
OSOBA 3 : ULAZI U LIFT NA SPRATU 1 LIFT : STOJI NA SPRATU 2
OSOBA 3 : PRITISCE DUGME U LIFTU
SPRAT 1 : GASI SE SVJETLO *** KRAJ SIMULACIJE ***
LIFT : ZATVARAJU SE VRATA NA SPRATU 1

8
2. ANALIZA I DIZAJN SISTEMA

Koristiemo pojednostavljenu UML notaciju za razumijevanje koncepata OOAD.

Kad govorimo o simulaciji, podrazumijevamo dva aspekta :


1. aspekt: elementi koji pripadaju sistemu koji simuliramo (lift, spratovi, dugmad, svjetla...)
2. aspekt: elementi koji nam trebaju da bi mogli simulirati sistem (sat, dispeer zadataka)

Prva faza u realizaciji sistema je analiza domena.

Cilj ove faze je formiranje liste zahtjeva koje treba da zadovolji ciljni sistem.

Identifikacija zahtjeva vri se intervjuisanjem lica koja ele da grade dati sistem, intervjuisanjem lica
koja e ga koristiti i sl.

Zahtjevi su osnova za dizajn (projektovanje). Treba da tano kau ta sistem treba da radi.

Dizajn je faza u kojoj e se na osnovu zahtjeva definisati kako e sistem da radi.

9
Use Case dijagrami

UML nudi dijagrame sluajeva upotrebe (use case diagram) da bi se obavila specifikacija
zahtjeva.

Ovdje se modeluju interakcije sistema i vanjskih klijenata (uesnika) kroz sluajeve upotrebe.

Sluaj upotrebe (use case) je neka konkretna aktivnost ili funkcija kojom sistem stvara
uesniku neku konkretnu prepoznatljivu vrijednost. (npr. podizanje gotovine na bankomatu,
provjera stanja na raunu, slanje SMS poruke, i sl.). UML simbol za sluaj upotrebe i primjeri:
Provjera Slanje SMS
sluaj podizanje
stanja na poruke
upotrebe gotovoine raunu

Sluajevi upotrebe u naem sistemu nisu brojni. Imamo samo vonju


liftom kao sluaj upotrebe! Treba paziti da nije svaka konkretna aktivnost
u sistemu sluaj upotrebe! Nije poziv lifta sluaj upotrebe, jer nije poziv
sam sebi cilj, nego samo jedna od aktivnosti u vonji liftom!!!

vonja
liftom

10
Uesnici (actors) su najee eksterni objekti ili sistemi koji koriste dati sistem.
Uesnici u naem sistemu su osobe koje e koristiti lift. Mi smo ih nazvali osobe.
UML simbol za uesnika:

Osoba

Dijagram sluajeva upotrebe u naem sistemu:

LIFT

vonja liftom

Osoba

U veim sistemima, broj sluajeva upotrebe ide i do nekoliko stotina ili ak hiljada.

11
IDENTIFIKOVANJE KLASA U SISTEMU

Da bi se identifikovale klase u sistemu, treba u eseju koji opisuje sistem (sluaj upotrebe) pronai sve
imenice. Najee su to klase (ili instance neke klase) koje treba da se realizuju.

U naem primjeru lifta mogu se identifikovati sljedee imenice:


KOMPANIJA VRIJEME DUGME NA SPRATU
ZGRADA TRENUTAK VRATA LIFTA
LIFT DISPEER ZVONCE LIFTA
SIMULATOR OSOBA SVJETLO NA SPRATU
SAT SPRAT itd.

Nisu sve jednako znaajne. Neke su i beznaajne za dati simulator, npr. kompanija, simulator,
energija

Za simulaciju nam nije potrebna KOMPANIJA kao klasa. Takoe, SIMULATOR e biti na program, a
ne neka pojedinana klasa. VRIJEME je samo jedno od obiljeja naeg sata i ne treba ga posmatrati
kao zasebnu klasu. ENERGIJA nije predmet simulacije, pa u konkretnom sluaju ne treba kao
zasebna klasa...

12
Za nau simulaciju sve imenice bi mogli svrstati u sljedee kategorije:
ZGRADA DISPEER DUGME NA SPRATU SVJETLO
LIFT OSOBA DUGME U LIFTU VRATA
SAT SPRAT ZVONCE

Identifikovane kategorije pogodne su kao klase koje treba implementirati u sistemu.

Imaju dva dugmeta. Oni jesu dugmad, ali svojim funkcija u sistemu se razlikuju pa su zato
razdvojeni.

Nakon identifikacije znaajnih objekata u sistemu moemo modelovati klase na osnovu


identifikovanih kategorija. Prvo treba odrediti nazive klasa. Prema konvenciji, prvo slovo u nazivu
klase je veliko a ostala slova mala. U sluaju naziva sa vie rijei, piemo ih zajedno a poetno slovo
svake rijei stavljamo veliko:
Zgrada Dispecer DugmeSprat Svjetlo
Lift Osoba DugmeLift Vrata
Sat Sprat Zvonce

Identifikovane klase bie gradivni elementi naeg sistema.

Jo treba da bolje razumijemo i prikaemo veze izmeu pojedinih klasa.

13
Dijagram klasa
Svaka klasa prikazuje se pravougaonikom. Pravougaonik moe biti podijeljen na tri dijela. Gornji dio
sadri IME KLASE, srednji dio sadri ATRIBUTE, a donji dio METODE. Radi preglednosti dijagrama,
ponekad moe da se samo koristi pravougaonik sa imenom klase.

Klasa ili Ime

atributi

metode

Klase i relacije izmeu klasa u nekom sistemu prikazuju se (UML) dijagramom klasa.

Postoji nekoliko razliitih tipova relacija izmeu klasa.

Prvi tip relacije je ASOCIJACIJA. Ova relacija se prikazuje punom linijom. Uz liniju se navode i
odgovarajui brojevi koji predstavljaju tzv. kardinalnost mapiranja broj koji kae koliko objekata
date klase uestvuje u toj relaciji. Zgrada u naem primjeru ima dva sprata, pa je klasa Zgrada u vezi
1-prema-2 (1:2) sa klasom Sprat, a Sprat u relaciji 2-prema-1 (2:1) sa klasom Zgrada. Nadalje,
zgrada ima jedan lift pa su klase Zgrada i Lift u relaciji 1:1.

Sprat 2 1 Zgrada 1 1
Lift

14
Mogue su sljedee kardinalnosti (multiplikativnosti) mapiranja:

simbol znaenje

0 Nijedan

1 Jedan

m Neki cijeli broj

0..1 Nula ili jedan

m..n Najmanje mali ne vie od n

* Bilo koji nenegativni cijeli broj

0..* Nula ili vie

1..* Jedan ili vie

15
Asocijacija moe da se imenuje. Za imenovanje se obino koriste glagoli, npr. slui, sastoji se i sl.
Tada se obino stavlja strelica koja ukazuje smjer asocijacije. U sljedeem primjeru asocijacija bi se
itala u obliku: "Jedan objekat klase Lift opsluuje dva objekta klase Sprat".
1 Zgrada 1

2 1
2 opsluuje 1
Sprat Lift
3

Neka klasa, odnosno objekti neke klase mogu da sadre objekte neke druge klase. Tada govorimo o
KOMPOZICIJI (veza CJELINA DIJELOVI). Kompozicija se prikazuje kao asocijacija koja na strani
cjeline ima ispunjeni romb.
1 Zgrada 1

2 1
2 opsluuje 1
Sprat3 Lift

16
Potpuni dijagram klasa za posmatrani sistem:

Sat

Zgrada

Dispecer

putnik koji Osoba putnik


eka

opsluuje
Sprat Lift

poziva

Svjetlo DugmeSprat DugmeLift Zvonce

Vrata

17
Klasa Zgrada se komponovana od 4 klase (Sprat, Lift, Dispecer, Sat). Klase Sat i Dispecer ine
kontrolni (upravljaki dio simulacije).

Klasa Sprat se je komponovana (ine je) od jednog objekta klase Svjetlo i jednog objekta klase
DugmeSprat.

Klasa Lift je komponovana od po jednog objekta klasa DugmeLift, Vrata i Zvonce.

Svaka od klasa igra ili ima neku ulogu. Uloge pojanjavaju relaciju izmeu dvije klase. Tako, klasa
Osoba igra ulogu "putnik koji ceka" u asocijaciji sa klasom Sprat, a ulogu "putnik" u asocijaciji sa
klasom Lift. Uloga se navodi pored linije koja predstavlja asocijaciju i to blie simbolu klase na koju
se odnosi. Svaka klasa u asocijaciji moe da igra drugaiju ulogu.

Isprekidane linije koje povezuju dve asocijacije predstavljaju ogranienja. U konkretnom primjeru
objekat klase Osoba moe uestvovati u relaciji sa objektom klase Sprat ili u relaciji sa objektom
klase Lift, ali ne istovremeno. Ovdje se koristi simbol {xor} da ukae na ogranienje. Mogu da se
koriste i {or}, {and}

18
Dijagram objekata

UML definie i dijagrame objekata.

Dijagrami objekata su slini dijagramima klasa, s tom razlikom to modeluju objekte i njihove
meusobne veze.

I dijagram objekata kao i dijagram klasa predstavlja model strukture sistema. Dijagram objekata
prikazuje stanje sistema (stanje strukture) u nekom konkretnom vremenskom trenutku. Kae se da
dijagram objekata predstavlja snimak sistema u nekom trenutku (snapshot).

Na sljedeoj slici prikazan je model sistema kad nema nikog u zgradi dijagram objekata prazne
zgrade.

19
dispecer : Dispecer zgrada : Zgrada sat : Sat

lift : Lift

opsluuje

opsluuje
: Zvonce : Vrata

: DugmeSprat
sprat1 : Sprat Sprat2 : Sprat

poziva

poziva
: Svjetlo : DugmeSprat : DugmeSprat : Svjetlo

Objekti na dijagramu objekata prikazuju se u obliku


imeObjekta : ImeKlase
Prvo slovo u imenu objekta ostavlja se malo za razliku od imena klase. Sva imena objekata u
dijagramu objekata su podvuena.
Navoenje imena objekata optereuje i ini dijagram manje itljivim u sluaju velikih sistema. Ako je
ime nekog objekta nepoznato ili nije prijeko potrebno ime objekta moe da se izostavi. Tada se
jednostavno navede
: ImeKlase
20
IDENTIFIKOVANJE ATRIBUTA U KLASAMA

Klasu ine podaci (atributi) i funkcije lanice (operacije nad atributima).

Posmatrajmo atribute objekata iz realnog svijeta. Osoba ima npr. ime, visinu, teinu i dr. Automobil
ima npr. boju, trenutnu brzinu, koliinu goriva u rezervoaru itd. Raunar npr. kapacitet RAM-a, tip
procesora, kapacitet hard diska itd.

Atributi opisuju klase. Atributi se dobijaju ako se imenice objekti u sistemu ponu opisivati. Dakle,
atributi slijede iz deskriptivnog opisa imenica u eseju kojim se opisuje posmatrani sistem. Za svaku
deskriptivnu rije ili frazu moemo da kreiramo neki atribut i da ga pridruimo klasi. Takoe, klasi
mogu da se dodaju svi potrebni podaci npr. dispeeru u primjeru simulatora treba i podatak kad
mora da kreira novu osobu na spratu.

21
U sljedeoj tabeli su prikazane klase simulatora i identifikovani atributi:

Klasa Deskriptivna rije ili fraza


Poinje dan ekajui na spratu 1
Mijenja smjer: kree se gore-dolje
Lift
Kapacitet: 1 osoba
Vrijeme kretanja: 5 sekundi s jednog sprata na drugi
Sat Na poetku dana poinje sa nulom
Dispecer Sluajno zadaje dolazak osobe u intervalu 5-20 sekundi za svaki sprat
Osoba Broj osobe
Sprat Kapacitet od 1 osobe: POPUNJEN / NIJE POPUNJEN
DugmeSprat PRITISNUTO
DugmeLift PRITISNUTO
Vrata OTVORENA / ZATVORENA
Zvonce -
Svjetlo UPALJENO / UGAENO
Zgrada -

22
Atributi se u simbolu klase u dijagramu klasa navode u srednjem dijelu. Za dati primjer simulatora
imamo:

Lift Vrata Zvonce


trenutniSprat : int = 1 otvorena : bool = FALSE
kapacitet : int = 1
kretanje : bool = FALSE
vrijemeDolaska : int DugmeLift Zgrada
smjer : enum pritisnuto : bool = FALSE

Sprat DugmeSprat Svjetlo


kapacitet : int = 1 pritisnuto : bool = FALSE upaljeno : bool = FALSE
popunjen : bool = FALSE

Dispecer Osoba Sat


sprat1DolaznoVrijeme : int ID : int vrijeme : int = 0
sprat2DolaznoVrijeme : int

23
Dijagram stanja (Statechart diagram State diagram)

Objekti u sistemu mogu da imaju razliita stanja. Stanje opisuje status objekta u nekom trenutku
vremena. Dijagrami stanja daju mogunost da se opie nain kako i pod kojim uslovima objekat u
sistemu mijenja svoje stanje.

Na sljedeoj slici je prikazan jednostavan dijagram stanja koji modeluje stanja objekta klase
DugmeSprat ili stanja objekta klase DugmeLift.

pritisak na dugme
nije
pritisnuto pritisnuto
resetovanje dugmeta

Svako stanje se prikazuje pravougaonikom sa zaobljenim vrhovima. Unutar pravougaonika se navodi


naziv stanja (npr. pritisnuto, nije pritisnuto...).

Ispunjeni krui sa strelicom pokazuje na poetno stanje, u primjeru to je stanje nije pritisnuto.

Pune linije sa strelicama pokazuju tranzicije izmeu stanja. Objekat prelazi iz stanja u stanje kao
odziv na neki dogaaj. Npr. pritisak na dugme prevodi dugme iz stanja nije pritisnuto u stanje
pritisnuto. Dogaaj koji proizvodi promjenu stanja navodi se pored linije koja oznaava datu
tranziciju.

24
Na sljedeoj slici je prikazan dijagram stanja za klasu Lift. Lift ima tri mogua stanja: ekanje,
kretanje i opsluivanje sprata.

pritisak na dugme
kretanje [treba da se kree] /
pritisak na dugme vrijemeDolaska = vrijeme + 5
[na drugom spratu] /
vrijemeDolaska = vrijeme + 5

when [vrijemeDolaska == vrijeme]

pritisak na dugme
[na istom spratu]
opsluivanje sprata
ekanje exit / zatvori vrata
[nema novih zahtjeva]

Lift poinje u stanju ekanje. Dogaaji koji izazivaju promjenu stanja strelicama su naznaeni prema
susjednim stanjima.

25
Ako je dugme pritisnuto na istom spratu prelazi se u stanje opsluivanje sprata. Unutar srednjih
zagrada navodi se uslov koji mora biti ispunjen u sluaju nekog dogaaja. U ovom sluaju: ako je lift
na istom spratu.

Ako je dugme pritisnuto na drugom spratu, lift prelazi u stanje kretanje. Ako se pri tom dogaaju
treba jo neto desiti u sistemu (npr. ovdje treba izraunati kad e lift stii) nakon dogaaja navedi
se iznak "/" i odgovarajua aktivnost.

Lift e se zaustaviti i prei iz stanja kretanja kad protekne odgovarajue vrijeme, odnosno kad se
izjednae trenutno vrijeme i izraunato vrijeme dolaska. Tada se prelazi u stanje opsluivanje
sprata.

Ako nema zahtjeva nakon to doe na sprat (dovezao putnika), zatvara vrata i prelazi u stanje
ekanje.

Ako je na spratu uao putnik i pritisnuo dugme u liftu, lift prelazi u stanje kretanje i rauna se
vrijeme dolaska.

Ako se neko stanje zavrava nekom specifinom akcijom, tada se simbol moe podijeliti na dva dijela,
a u donjem dijelu navesti exit / akcija, gdje akcija prikazuje ta se radi prilikom izlaza iz tog stanja.

26
Dijagram aktivnosti (Activity diagram)

Dijagram aktivnosti je varijacija dijagrama stanja. Dijagram aktivnosti fokusira se na aktivnosti koje
objekat izvodi. Dijagram aktivnosti modeluje ono ta objekat radi tokom svog postojanja.

Aktivnosti se u dijagramu aktivnosti prikazuju pomou ovalnih simbola. Naziv aktivnosti navodi se
unutar simbola. Dvije aktivnosti meusobno se povezuju strelicama tako da smjer ukazuje na
redoslijed aktivnosti u procesu.

Dijagram aktivnosti zapoinje ispunjenim krugom, a zavrava krugom u ijoj se unutranjosti nalazi
ispunjeni krug ("bikovo oko").
Sljedei dijagram aktivnosti modeluje aktivnosti koje se izvravaju svaki put kad je dugme pritisnuto.
Kad se dugme pritisne, lift donosi odluku. Taka odluivanja prikazuje se pomou romba. Lift bira
odgovarajuu aktivnost na bazi ispunjenosti postavljenih uslova. Svaka linija ili putanja od take
odluivanja predstavlja jednu ili vie razliitih aktivnosti koje mogu da se izaberu. Pored tih linija
navode se uslovi koji su ispunjeni.
U naem sluaju, lift izvodi jedan od tri razliita seta aktivnosti kad je dugme pritisnuto.
Ako je lift u stanju mirovanje, ne moraju se izvoditi nikakve aktivnosti kretanja pa je ova sekvenca
aktivnosti jednostavno zavrava.
Ako je dugme pritisnuto na istom spratu, lift resetuje dugme na tom spratu, zvoni i otvara vrata.
Ako je dugme pritisnuto na drugom spratu, lift mora da se kree, zaustavi na tom spratu, resetuje
dugme, zvoni i otvori vrata.
27
[dugme pritisnuto]
[u kretanju]

[vrijeme [nije pritisnuto dugme


==vrijemeDolaska] na istom spratu] [pritisnuto dugme
na istom spratu]

zatvori vrata

kreni na drugi sprat

zaustavi kretanje

[vrijeme < vrijemeDolaska]

resetuje dugme

zazvoni

otvori vrata

28
IDENTIFIKOVANJE OPERACIJA U KLASAMA

Da bi model klasa bio potpun, treba da identifikujemo ponaanje objekata, odnosno operacije u
klasama.

Operacija u klasi je usluga koju klasa prua klijentima korisnicima klase. U realnom svijetu to bi
npr. bilo: ubrzavanje automobila (pritiskom na papuicu gasa), usporenje automobila (pritiskom na
konicu) i dr.

Obino objekti ne izvode operacije spontano. Najee se specifina operacija poziva kada klijentski
objekat poalje poruku serverskom objektu traei od njega da izvri specificiranu operaciju. Ovo
zapravo znai poziv funkcije lanice date klase.

Iz eseja koji opisuje konkretan realni sistem mogu da se izvuku operacije za svaku klasu. Da bi se
identifikovale operacije treba posmatrati glagole i glagolske fraze.

29
U sljedeoj tabeli su prikazane klase simulatora i identifikovane operacije (glagoli i glagolske fraze):
Klasa Glagolska fraza
kree se
dolazi na sprat
resetuje dugme u liftu
Lift ukljuuje zvonce
signalizira dolazak na sprat
otvara vrata,
zatvara vrata
Sat "Tik-tak" svake sekunde
sluajno odreuje vremena kreiranje osoba
kreira osobe
Dispecer
verifikuje da li je sprat slobodan ili zauzet
odgaa kreiranje nove osobe za jednu sekundu
dolazi do lifta
pritie dugme na spratu
Osoba pritie dugme u liftu
ulazi u lift
izlazi iz lifta
resetuje dugme na spratu
Sprat ukljuuje svjetlo
iskljuuje svjetlo

30
DugmeSprat poziva lift
DugmeLift signalizira liftu da krene
(otvaranje vrata) signalizira osobi da izae iz lifta
Vrata
(otvaranje vrata) signalizira osobi da ue u lift
Zvonce -
Svjetlo -
Zgrada -

Da bi se na osnovu navedenih fraza odredile operacije, treba svaku frazu analizirati ponaosob.
Glagol "kree se" u klasi Lift upuuje na aktivnost u kojoj se lift kree izmeu spratova. Treba li
"kree se" biti operacija u klasi Lift? Nema poruke koja liftu kae da se kree, odnosno, lift odluuje
da se kree kao odgovor na pritisnuto dugme zavisno od toga da li su vrata zatvorena. Ovo upuuje
da "kree se" nije operacija u klasi.
Fraza "dolazi na sprat" takoe nije operacija, jer je dolazak na sprat uslovljen proteklim vremenom.
Fraza "resetuje dugme u liftu" ukazuje da lift alje poruku dugmetu da se resetuje. To znai da klasa
DugmeLift treba neku operaciju kojom e omoguiti ovu uslugu liftu. Operacije se u simbolu klase
navode u donjem dijelu. Ime operacije se predstavlja kao ime funkcije ukljuujui tip podatka koji
funkcija vraa, npr:
resetDugme() : void
Unutar zagrada navodi se lista parametara koji se alju funkciji (koje funkcija prima).
31
DugmeLift
pritisnuto : bool = FALSE
resetDugme() : void

Iz fraze "ukljuuje zvonce" u klasi Lift, zakljuujemo da klasa Zvonce treba da omogui uslugu
zvonjenja. Dakle, klasa Zvonce treba da ima operaciju zvoniZvonce() : void.
Kad lift doe na sprat on "signalizira dolazak" i sprat odgovara izvoenjem odgovarajuih aktivnosti.
Dakle, klasa Sprat treba jednu operaciju kojom to omoguava npr. liftDolazak() : void.
Fraze "otvara vrata" i "zatvara vrata" upuuju da klasa Vrata treba da omogui te operacije, pa u
klasu Vrata uvodimo operacije otvoriVrata() : void i zatvoriVrata() : void.
Klasu sat karakterie "tik-tak" svake sekunde. Sigurno bi operacija "pokai vrijeme" bila operacija
klase Sat.
ta je sa "tik-tak". To zavisi od nae simulacije. Iz eseja se vidi da dispeer treba da zna tekue
vrijeme da bi odluio da li e kreirati novu osobu. Takoe, lift mora da zna vrijeme da bi odluio da li
je vrijeme da se zaustavi na spratu. Nadalje, odlueno je da "zgrada" nosi odgovornost za izvravanje
simulacije i prosljeivanje vremena dispeeru i liftu. Vidi se da "zgrada" svake sekunde za vrijeme
trajanja simulacije ponavlja sljedee korake:
1. oitava vrijeme sa sata
2. alje vrijeme dispeeru da bi on kreirao novu osobu ako je potrebno
3. alje vrijeme liftu da bi lift odluio da li treba da stane na spratu ako je u stanju kretanja

32
Takoe, sat treba biti auriran svake sekunde. Ovo vodi da treba operacija tiktak() : void. Osim
toga, treba i operacija koja oitava vrijeme citajVrijeme() : int. Ovo su operacije klase Sat.

Koraci "alje vrijeme dispeeru" i "alje vrijeme liftu" upuuje da Lift i Dispeer trebaju operaciju koja
prima i procesira vrijeme procesVrijeme(vrijeme : int) : void.

Klasa Zgrada treba operaciju startSimulacije() : void.

Fraze "sluajno odreuje vremena" i "odgaa kreiranje nove osobe" su aktivnosti koje sam dispeer
izvodi i nisu usluge koje prua drugima, zato ove dvije fraze nisu operacije.

Fraza "kreira osobu" predstavlja specijalan sluaj. Iako moemo modelovati da objekat klase Dispecer
alje poruku o kreiranju osobe, objekat klase Osoba ne moe da odgovori, jer jo uvijek ne postoji.
Kreiranje objekta ostaviemo za kasniju fazu (faza implementacije) i ne predstavlja se kao neka
operacija u klasi.

Fraza "verifikuje da li je sprat slobodan" upuuje na to da klasa Sprat treba da omogui tu uslugu
objektima u sistemu. Ova operacija treba da vrati istinu ako je sprat slobodan ili la ako je sprat
zauzet, pa imamo operaciju ZauzetSprat() : bool u klasi Sprat.

Fraze "pritie dugme na spratu" i "pritie dugme u liftu" u klasi Osoba vode ka operaciji
pritisniDugme():void u klasama DugmeSprat i DugmeLift.

33
Fraze "ulazi u lift" i "izlazi iz lifta" u klasi Osoba upuuje da klasa Lift treba to da omogui objektima
klase Osoba, pa klasa Lift treba da ima operacije osobaUlazi() : void i osobaIzlazi() : void.

Klasu Sprat karakterie fraza "resetuje dugme na spratu", pa klasa DugmeSprat treba da ima
operaciju resetDugme() : void. Takoe, imamo "ukljuuje svjetlo" i "iskljuuje svjetlo", pa klasa
Svjetlo treba da ima operacije ukljuciSvjetlo() : void i iskljuciSvjetlo() : void.

Klasa DugmeSprat poziva objekat klase Lift, pa klasa Lift treba operaciju pozoviLift() : void.

Fraza "signalizira liftu da krene" u klasi DugmeLift ukazuje da Lift treba da omogui uslugu kretanja.
Lift moe da krene samo ako su vrata zatvorena. Zato imamo operaciju PripremiZaKretanje() :
void koja vri sve potrebne pripreme lifta za kretanje.

Fraze u klasi Vrata alju poruke osobi da izae iz lifta ili da ue u lift, pa su Udji() : void i Izadji()
: void potrebne operacije u klasi Osoba.

Na sljedeoj slici prikazane su sve klase ukljuujui i obiljeja i operacije.

34
Lift Vrata Zvonce
trenutniSprat : int = 1 otvorena : bool = FALSE ---
kapacitet : int = 1 otvoriVrata() : void zvoniZvonce() : void
kretanje : bool = FALSE zatvoriVrata() : void
vrijemeDolaska : int
smjer : enum DugmeLift Zgrada
procesVrijeme (vrijeme : int) : void pritisnuto : bool = FALSE ---
osobaUlazi() : void resetDugme() : void startSimulacije() : void
osobaIzlazi() : void pritisniDugme() : void
pozoviLift() : void
pripremiZaKretanje() : void

Sprat DugmeSprat Svjetlo


kapacitet : int = 1 pritisnuto : bool = FALSE upaljeno : bool = FALSE
popunjen : bool = FALSE resetDugme() : void ukljuciSvjetlo() : void
liftDolazak() : void pritisniDugme() : void iskljuciSvjetlo() : void
zauzetSprat() : bool
osobaDolazak() : void

Dispecer Osoba Sat


sprat1DolaznoVrijeme : int ID : int vrijeme : int = 0
sprat2DolaznoVrijeme : int udji() : void dajVrijeme() : int
procesVrijeme (vrijeme : int) : void izadji() : void tiktak() : void

35
Dijagram sekvence (Sequence diagram)
Dijagram sekvence koristi se za modelovanje ponaanja sistema. Fokusira se na poruke koje se alju
izmeu objekata. Pogodan za fokusiranje na vremensku komponentu procesa. Ovdje e se zgodno
iskoristiti za modelovanje simulacije.
Na slici je prikazan dijagram sekvence simulacije. Tekst s lijeve strane predstavlja potreban uslov
(vremensko ogranienje)

: Zgrada : Sat : Dispecer : Lift


tiktak()
{vrijeme < ukupnoVrijeme}

dajVrijeme()

vrijeme : int

procesVrijeme (vrijeme : int)

procesVrijeme (vrijeme : int)

36
Svaki objekat se predstavlja simbolom koji se koristio i u dijagramu objekata. Simboli objekata koji
uestvuju u procesu stavljaju se na vrh dijagrama. Ispod tih simbola povlae se isprekidane linije
koje pokazuju ivotni vijek objekata. ivotna linija nekog objekta pokazuje progres tokom vremena
prikaz akcija hronolokim redom od vrha prema dnu ivotne linije.

Poruka (message) izmeu dva objekta prikazuje se kao usmjerena linija (strelica) od klijenta prema
serveru. Poruka izaziva odgovarajuu operaciju na serveru objektu koji prua uslugu. Strelica
pokazuje na ivotnu liniju objekta koji prima poruku. Ime poruke navodi se iznad linije i moe da
ukljuuje i parametre koji se prenose. Npr. objekat klase Zgrada alje poruku procesVrijeme
objektu klase Lift. Poto se alje parametar vrijeme na dijagramu imamo procesVrijeme (vrijeme :
int).

Ako neki objekat vraa kontrolu toka ili ako vraa neku vrijednost, povratna poruka se prikazuje na
dijagramu u obliku isprekidane linije sa strelicom usmjerenom prema objektu koji je pozivao. Npr.
objekat klase Sat vraa vrijeme kao odgovor na poruku dajVrijeme koju je poslao objekat klase
Zgrada.

Kad objekat primi poruku to se na ivotnoj liniji oznaava posebnom trakom koja traje sve dok se
akcija ne zavri. Ove trake nazivaju se aktivacije. Svaka aktivacija predstavlja trajanje neke
aktivnosti. to aktivnost due traje, to je i aktivacija dua.

37
Na sljedeoj slici prikazan je dijagram sekvence koji modeluje ponaanje dispeera. Objekat zgrada prvo
dispeeru alje poruku procesVrijeme. Dispeer mora da odlui da li treba da kreira novu osobu na prvom
spratu (objekat sprat1 klase Sprat). Zato dispeer prvo mora da provjeri da li je sprat1 slobodan ili zauzet pa
alje poruku zauzetSprat objektu sprat1, koji vraa odgovor TRUE ili FALSE. Ovdje se ivotna linija dispeera
dijeli na dvije paralelne ivotne linije koje predstavljaju potencijalne sekvence poruka koje objekat moe da
poalje, zavisno od odgovora koji je vratio objekat sprat1. Potencijalno se ivotna linija moe dijeliti i na vei
broj novih uslovnih linija. Pored tih linija treba navesti uslov pod kojim je ivotna linija vaea. Linije mogu da
se spajaju u nekoj taki ili da nastave paralelno da postoje.
Ako sprat1 vrati TRUE (sprat1 je zauzet), dispeer poziva svoju vlastitu funkciju odgodiKreiranje kojoj
parametrom ukazuje da treba vrijeme kreiranja promijeniti za prvi sprat. Ova funkcija nije operacija u klasi
Dispeer, jer je ne pozivaju drugi objekti. To je jednostavno aktivnost klase Dispecer koja se izvodi unutar
neke operacije. Dakle, objekat dispecer alje sam sebi poruku (poziva svoju funkciju lanicu). Aktivacije se za
ovakve poruke crtaju na desnom rubu trenutne aktivacije (kao na slici).
Ako sprat1 vrati FALSE (sprat1 je slobodan), dispeer kreira novi objekat klase Osoba. U dijagramu sekvence,
kada se kreira novi objekat, simbol objekta se postavlja na vertikalnoj poziciji koja odgovara vremenu kada je
objekat kreiran. Objekat koji kreira neki drugi objekat alje poruku <<create>>. Strelica ove poruke pokazuje
na simbol novog objekta. Kad neki objekat prestaje da ivi, ivotna linija se prekida simbolom X. Ovdje nije
prikazano.
Nakon kreiranja, osoba se pojavljuje na spratu1, tj. objektu sprat1 alje se poruku osobaDolazak. Osim
toga, dispeer poziva svoju vlastitu funkciju odrediNoviDolazak, to se prikazuje kao nova aktivacija na
desnom rubu postojee aktivacije. Ova funkcija nije operacija koja se nudi drugima, nego samo neka aktivnost
koja se izvodi unutar jedne operacije.
Sada se dvije ivotne linije dispeera spajaju. Kao to je opisano za sprat1, dispeer procesira vrijeme i za
sprat2. Kad dispeer zavri i sa drugim spratom, kontrola se vraa objektu zgrada.

38
zgrada : Zgrada dispecer : Dispecer sprat1 : Sprat sprat2 : Sprat
procesVrijeme (vrijeme)
zauzetSprat () : bool

bool

[ zauzet == false ]

[ zauzet == true ]
osobaDolazak ()

odgodiKreiranje (sprat1)

odrediNoviDolazak (sprat1)

zauzetSprat () : bool

bool

[ zauzet == false ]

[ zauzet == true ] osobaDolazak ()

odgodiKreiranje (sprat2)
odrediNoviDolazak (sprat2)

39
SARADNJA (INTERAKCIJA) IZMEU OBJEKATA
Kad dva objekta meusobno komuniciraju da bi realizovali neki zadatak kaemo da sarauju (collaborate),
odnosno da imamo saradnju ili kolaboraciju dva objekta.
Kolaboracija se sastoji u sljedeem:
1. objekat jedne klase 2. alje odgovarajuu poruku 3. objektu druge klase
Poruka koju alje prvi objekat, poziva operaciju u drugoj klasi. Ovdje emo se koncentrisati na poruke koje
pozivaju te operacije. U naem sistemu uoili smo sljedee operacije:

Klasa Glagolska fraza


resetuje dugme u liftu, ukljuuje zvonce
Lift
signalizira dolazak na sprat, otvara vrata, zatvara vrata
Sat "Tik-tak" svake sekunde
Dispecer kreira osobu, verifikuje da li je sprat slobodan ili zauzet
pritie dugme na spratu, pritie dugme u liftu
Osoba
ulazi u lift, izlazi iz lifta
resetuje dugme na spratu
Sprat
ukljuuje svjetlo, iskljuuje svjetlo
DugmeSprat poziva lift
DugmeLift signalizira liftu da krene

40
(otvaranje vrata) signalizira osobi da izae iz lifta
Vrata
(otvaranje vrata) signalizira osobi da ue u lift
Zvonce -
Svjetlo -
inkrementira vrijeme, dobija vrijeme od sata
Zgrada
obezbjeuje vrijeme dispeeru, obezbjeuje vrijeme liftu

Operacije navedene u tabeli predstavljaju kolaboracije u sistemu. Odreuju se na sljedei nain: za


klasu Lift imamo ukljuuje zvonce, pa da bi se realizovao zadatak zvonjenja objekat klase Lift
mora poslati poruku zvoniZvonce objektu klase Zvonce kojom poziva operaciju zvoniZvonce te
klase.

41
U sljedeoj tabeli su prikazane sve kolaboracije:
objekat klase alje poruku objektu klase
resetDugme DugmeLift
zvoniZvonce Zvonce
Lift
liftDolazak Sprat
otvoriVrata, zatvariVrata Vrata
Sat
kreirajOsoba Osoba
Dispecer
zauzetSprat Sprat
pritisniDugme DugmeLift
pritisniDugme DugmeSprat
Osoba
osobaUlazi, osobaIzlazi Lift
osobaDolazak Sprat
resetDugme DugmeSprat
Sprat
ukljuciSvjetlo, iskljuciSvjetlo Svjetlo
DugmeSprat pozoviLift Lift
DugmeLift pripremiZaKretanje Lift
Vrata udji, izadji Osoba
Zvonce -
Svjetlo -
tiktak, dajVrijeme Sat
Zgrada procesVrijeme Dispecer
procesVrijeme Lift

42
Dijagram saradnje (Collaboration diagram)
UML raspolae dijagramima kolaboracije da bi se modelovala interakcija objekata u sistemu. I dijagrami
sekvence su dijagrami za modelovanje interakcije, ali dijagrami sekvence su pogodniji za fokusiranje na
vremensku komponentu interakcije (kada se ta deava i kojim redom), a dijagrami kolaboracije na
strukturalnu komponentu (ko uestvuje u interakciji).
Na sljedeoj slici prikazan je dijagram saradnje koji modeluje interakcije izmeu objekata u sistemu u kojem
objekti klase Osoba ulaze i izlaze iz lifta. Saradnja zapoinje kad lift doe na sprat.
Objekti se standardno prikazuju kao i u ostalim dijagramima. Objekti koji sarauju povezuju se punim linijama.
Poruke se prikazuju strelicama koje su usmjerene ka objektu prema kojem se poruka alje. Redoslijed poruka
prikazuje se uvoenjem numeracije.
Startna poruka ima broj 1 (lift alje poruku resetDugme dugmetu u liftu kako bi se resetovalo dugme u liftu).
Nakon toga, lift alje poruku zvoniZvonce (poruka br. 2).
Nakon toga lift najavljuje dolazak na sprat porukom liftDolazak (poruka 3), pa sprat moe resetovati dugme na
spratu (poruka 3.1) i upaliti svjetlo (poruka 3.2).
Kad sprat resetuje dugme i upali svjetlo, lift otvara vrata (poruka 4). Ovdje vrata alju poruku izadji (poruka
4.1) putniku koji je u liftu a zatim putnik izlazi iz lifta i obavjetava lift da je izaao porukom osobaIzlazi
(poruka 4.1.1). Nakon to osoba koja je bila u liftu izae iz lifta, osoba koja je ekala moe ui u lift pa objekat
vrata alje poruku udji (poruka 4.2). Po ulasku putnik obavjetava lift da je uao (poruka 4.2.1)

43
: DugmeSprat : Svjetlo

3.1: resetDugme() 3.2: ukljuciSvjetlo()

: Sprat

3: liftDolazak()

4.2.1: osobaUlazi() 4.1.1: osobaIzlazi()

putnikKojiCeka: Osoba : Lift putnik : Osoba

1: resetDugme() 2: zvoniZvonce()

: DugmeLift : Zvonce

4: otvoriVrata()

4.2: udji() 4.1: izadji()

: Vrata

44
REZIME OBJEKTNO-ORIJENTISANE ANALIZE I DIZAJNA

1. Od krajnjeg korisnika (investitora) saznaj to vie moe


2. Kreiraj sluajeve upotrebe
3. Identifikuj klase
(identifikuj prvo sve imenice,
a zatim ih filtriraj da ostanu samo one koje predstavljaju klase)
4. Identifikuj atribute u svakoj klasi
5. Upoznaj se sa dinamikom prirodom sistema
(kreiraj dijagrame stanja da uoi promjene klasa tokom vremena)
6. Ispitaj glagole i glagolske fraze vezane za svaku klasu da bi izdvojio operacije u klasi
(dijagrami aktivnosti mogu biti od pomoi)
7. Ispitaj interakcije izmeu objekata (nacrtaj dijagram sekvence i dijagram saradnje)

45

You might also like