You are on page 1of 59

Objektno Orjentisano

projektovanje
Faze Objektno Orjentisanog
projektovanja
 Sprovođenje odgovarajuće analize
 Pravljenje opisa sistema
 Pravljenje prototipa korisničkog interfejsa
 Pronalaženje klasa
 Utvrdivanje odgovornosti svake od klasa
 Određivanje saradnje između različitih klasa
 Pravljenje opšteg modela koji opisuje sistem koji treba
stvoriti
Tok procesa projektovanja
Metoda vodopada.
 Oštre granice između različitih faza. Projektovanje se
završava pre faze realizacije, koja se završava pre
faze testiranja, i tako dalje.
Metod brzog stvaranja prototipa,
 Dominantan iterativni postupak. U ovim modelima
se, pre završetka faze projektovanja, vrši izvesna
realizacija, kao način da se dokaže valjanost zamisli.
 Ispravno je da se prvo uradi potpun i temeljan
projekat, pa da se tek onda pređe na pisanje koda.
Zašto treba težiti ranom pre-
poznavanju zahteva korisnika
 U fazi projektovanja, mali su troškovi izmene projekta
ili projektnog zahteva.
 U fazi realizacije, znatno su veći izdaci izmene
projekta.
 Troškovi izmene projekta, koji se nalazi u fazi
instaliranja, izuzetno su veliki.
Objektno modelovanje
 Za manje strukturirane probleme sve češće se
primenjuje Object Orjented Analysis koja se
primenjuje u fazi sistem analize i pravljenja prototipa
korisničkog interfejsa
 Osnova premisa objektnog modelovanjaje je da
objekti postoje svuda oko nas.
Objekat
Prema Websterovom rečniku
Objekat je nešto što postoji ili se može videti, dodirnuti
ili na drugi način osetiti.
Dodatak za objektno orjentisano modelovanje
i korisnik o tome, kao i o odgovarajućem ponašanju
treba da čuva podatke.
Nešto se odnosi na tip objekta
Podatak se odnosi na atribute
Ponašanje se odnosi na to šta objekat može da čini i
to korenspodira funkciji nad tim objektom
Opis sistema
 Opis sistema je tekstualni dokument koji opisuje ceo
sistem. Utvrdivanje zahteva je osnovni cilj koji treba
postići u fazi analize, medutim, zahtevi nisu
namenjeni široj publici, već samo programerima.
 Iz opisa sistema, trebalo bi da shvati čemu je sistem
namenjen, od čega se sastoji i kako radi.
 Bez obzira kako je opis sistema napisan, on mora
kratko i jasno objasniti ceo sistem.
 Opis sistema sadrži sve podatke koje treba znati o
sistemu. Mnogi kupci šalju zahteve za projekat
proizvođaču (Request For Proposal, RFP). Ovaj
zahtev je sličan opisu sistema, jer detaljno opisuje
kakav sistem kupac želi da kupi.
 Ovakav zahtev za projekat kupac šalje mnogim
projektantskim kucama. Oni zatim, proučavaju ovaj
dokument i na osnovu njega vrše razne analize, da bi
na kraju odlučili hoće li poslati ponudu za dati
projekat i sa kojom cenom.
Request For Proposal
 Dokument sa zahtevima opisuje šta korisnik očekuje
od sistema..
 Opis sistema je običan dokument sastavljen iz
pasusa, dok se zahtevi obično pišu kao zaključci
(nekoliko rečenica) ili spisak stavki. Svaka
pojedinačna stavka predstavlja jedan određeni zahtev
u odnosu na sistem. Zahtevi se dobijaju iz opisa
sistema.
 Postoji mnogo razloga zašto su ovi zahtevi najvažniji
deo sistema. Opis sistema može sadržati suvišne i
nevažne informacije. Međutim, zahtevi čine konačnu
predstavu sistema koji treba ostvariti. Svi naredni
dokumenti o razvoju softvera zasnivaju se na
zahtevima.
Razvijanje prototipa korisničkog
interfejsa
 Prototip je jedan od najboljih načina da se proveri da
li korisnici i programeri razumeju kako sistem radi.
 prototip treba da simulira korisnički interfejs. cime se
stvara predstava čime će raditi i kako će sistem
izgledati.
 Većina sistema se pravi u integrisanom razvojnom
okruženju (Integrated Development Environment,
IDE). Ipak, crtanjem ekrana na tabli ili papiru možete
prikazati sve što je najvažnije.
 U fazi izrade prototipa, ne morate realizovati logiku
(deo koda koji iza interfejsa obavlja obradu
podataka), U ovom trenutku, najbitniji su predlozi,
mišljenja i kritike korisnika na temu korisničkog
interfejsa
Pronalaženje klasa
 Polazeći od zahteva, pravimo spisak klasa tako što
ćemo istaći sve imenice. To su objekti, poput ljudi,
mesta, stvari.
 Na kraju ovog postupka, neke klase ćete izbaciti,
druge ćete dodati, a neke ćete menjati u raznim
fazama projektovanja.
 Važno je početi od nečega. Iskoristite povoljnu
činjenicu da projektovanje predstavlja iterativan
proces. Kao i u ostalim oblicima stvaranja ideja, od
nečega počinjete, svesni da krajnji ishod može biti
daleko od početnih ideja.
Utvrđivanje odgovornosti svake od
klasa
 Odgovornosti klase su podaci koje klasa mora
čuvati i radnje koje klasa mora obavljati?
 Na primer, objekat klase Službenik je odgovoran za
izračunavanje plata i prenos novca na odgovarajući
račun. Takođe, ovaj objekat može biti odgovoran za
skladištenje raznih iznosa plata i brojeva računa
različitih banaka.
Utvrđivanje načina saradnje klase sa
ostalim klasama
 Većina klasa ne radi u izolaciji. Da bi klasa mogla
ispuniti postavljene zadatke, ona mora sarađivati sa
ostalim klasama. Zato su neophodne poruke. Kada
jedna klasa želi od druge klase da dobije potrebne
informacije, ili želi da joj druga klasa nešto obavi, ona
drugoj klasi šalje poruku.
Pravljenje modela klasa koji opisuje
sistem

 Kada utvrdite koje klase treba da napravite, koje će


biti njihove odgovornosti, funkcije i saradnja, možete
napraviti model klasa koji predstavlja ceo sistem.
Model klasa prikazuje kako različite klase sarađuju
unutar sistema.
Korišćenje CRC kartica
 Metod CRC, skraćenica za klasa-odgovornost-
saradnja, (class- responsibility-collaboration) je
popularan način za prepoznavanje i klasifikaciju
klasa.
 Svaka CRC kartica predstavlja atribute pojedinačne
klase, njene odgovornosti i saradnju sa ostalim
klasama.
Na svakoj kartici treba napraviti tri odeljka:
 Ime klase

 Odgovornosti klase

 Saradnje te klase
Primer igre ajnc sa kartama
Izjava o zahtevima za sistem
 Ova aplikacija treba da imitira igru ajnc.

 U igri učestvuje jedan, ili više igrača, protiv delioca


(kuća). Iako u igri može učestvovati više igrača, svaki
od njih igra samo protiv delioca, a ne sa ostalim
igračima.
 Cilj igrača, je uzimanje karata iz špila, dok njihov zbir ne
dostigne 21, ili da zbir bude što bliži broju 21, ali ne
veći.
 Ako zbir karata u ruci igrača prelazi 21, igrač je izgubio
igru.
 Ako u prva dva izvlačenja igrač ima zbir koji iznosi 21,
tada je on postigao cilj - ima ajnc.
 Delilac igra sa svim igračima. On mora svima da deli
karte, deli igraču dodatne karte, prikazuje deo ili celu
ruku, izračunava vrednost dela ili cele ruke, broji karte u
ruci, proglašava pobednika i počinje novu ruku.
 Svaka karta mora imati svoju vrednost i mora da je
prikaže. Boja karte u ovoj igri nema značaj (ali postoje
igre gde je to bitno). Sve karte moraju biti iz istog špila.
Špil mora imati mogućnost deljenja sledeće karte i
mora da izveštava koliko je karata ostalo u špilu.
 Tokom igre, igrač može tražiti da kartu dobije u svoju
ruku. Igrač mora biti u mogućnosti da prikaže ruku, da
izračuna zbir u ruci i da utvrdi broj karata u njoj. Kada
delilac pita igrača da li želi još jednu kartu. ili želi da
otpočne novu igru, igrač mora odgovoriti.
 Svaka karta ima vrednost (boja se ne računa u
vrednost). As se računa kao 1 ili kao 11. Štihovi
(žandar, dama i kralj) vrede 10. Ostale karte imaju
svoju vrednost.
 Pravila igre kažu: ako je zbir vrednosti karata u ruci
igrača bliži vrednosti 21, nego što je zbir vrednosti
karata u ruci delioca, igrač dobija iznos dva puta veći
od iznosa koji je uložio.
 Ako igrač i delilac imaju iste zbirove, a najmanje 17,
tada je rezultat nerešen i igrač dobija nazad svoj ulog.
 Ako igrač ima ajnc, tada on dobija ulog uvećan 2,5 puta
(pod pretpostavkom da delilac nema ajnc).
 Ako zbir karata u ruci igrača premaši 21, igrač gubi
ulog.
 Ajnc (as sa desetkom ili štihom) je kombinacija koja je
jača od svih kombinacija koje u zbiru imaju 21.
Pronalaženje klasa u igri ajnc
 Delilac igra sa svim igračima. On mora svima da deli
karte, deli igraču dodatne karte, prikazuje deo ili celu
ruku. izračunava vrednost dela ili cele ruke. broji karte
u ruci, proglašava pobednika i počinje novu ruku.
Svaka karta ima vrednost (boja se ne računa kao
vrednost). As se računa kao 1 ili kao 11. Štihovi
(žandar. dama i kralj) vrede 10. Ostale karte se
računaju sa svojim vrednostima.
Odabir pravih od mogucih
 Igra — zove se ajnc. Dovoljna je jedna imenica sa istim
značenjem - igra.
 Ajnc - u ovom slučaju, igra se može smatrati imenicom,
ali igra je sam sistem, pa ćemo ovu stavku izbaciti iz
spiska
 Delilac - ne možemo igrati bez delioca. pa ćemo
zadržati ovu imenicu (napomena: možemo da izvršimo
izdvajanje osobina koje se odnose uopšteno na ljude,
ali to nećemo raditi u ovom primeru).
 Takođe, rešenje je da izbegnemo zasebnu klasu za
delioca, čime bi delilac bio primerak klase igrač.
Međutim, delilac ima dovoljno dodatnih atributa da ima
zasebnu klasu
 Kuća - ovo je samo još jedan naziv za delioca, pa ga
brišemo sa spiska.
 Igrači i igrač - trebaju nam igrači, pa moramo imati
klasu za te objekte. Ipak, želimo da klasa predstavlja
pojedinačne igrače, a ne grupu ili više igrača. Precr-
taćemo „igrači", a ostavićemo reč „igrač".
 Karte i karta - slično kao i u prethodnoj stavki. Da bismo
igrali, neophodne su nam karte, ali želimo da klasa
predstavlja pojedinačne karte. Precrtavamo „karte", a
zadržavamo imenicu „karta".
 Špil - pošto špil karata obavlja mnogo radnji (mešanje,
izvlačenje), složili smo se da špil treba da ostane na
spisku za izbor klasa
 Ruka - ovo je nejasno. Svaki igrač ima ruku. U ovoj igri
kažemo da „svaki igrač ima jednu ruku". Moguće je da
igrač prati svoje karte bez objekta ruka. Međutim, pošto
je teorijski moguće da korisnik ima više ruku, a i zbog
toga što koncept ruke želimo da koristimo i u drugim
(budućim) igrama sa kartama, zadržaćemo ovu klasu.
 Cilj projektovanja je i da projekat bude proširiv. Ako u
ovoj igri napravimo dobar projekat, možda ćemo moći
ponovo da ga koristimo, u ostalim igrama sa kartama.
 Vrednost karte - vrednost karte je najbolje predstaviti u
obliku atributa klase karta, pa ćemo ovu stavku precrtati
sa spiska.
 Boja - ova reč je, takođe, nejasna. U ajncu, ne moramo
voditi računa o boji karte. pa ćemo i ovu stavku
precrtati sa spiska.
 As - ovu reč je bolje predstaviti kao atribut klase karte.
pa ćemo stavku precrtati sa spiska.
 Stih - ovu reč je bolje predstaviti kao atribut klase karte,
pa ćemo stavku izbrisati sa spiska.
 Kralj - ovu reč je bolje predstaviti kao atribut klase
karte, pa ćemo stavku precrtati sa spiska.
 Dama - ovu reč je bolje predstaviti kao atribut klase
karte, pa ćemo stavku precrtati sa spiska.
 Ulog - ova potencijalna klasa nas takode dovodi u
nedoumicu. Uvereni smo da ajnc možete igrati i bez
uloga. Međutim, u izjavi o zahtevu jasno stoji naveden
ulog. U našem primeru. ulog bi se mogao smatrati
atributom igrača, ali postoji čitav niz igara kartama u
kojima ne postoje ulozi. Ukratko, ulog nije logičan
atribut igrača. Takođe, apstrakcija uloga je dobra ideja,
jer možemo uložiti različite stvari. Ulog može biti u
žetonima, u novcu, i robi (ručni sat, auto, vlasništvo nad
kućom). Iako postoji mnogo razloga da ulog ne bude
zasebna klasa, u našem slučaju, ulog će biti zasebna
klasa.
Klase u igri ajnc

Karta Spil Ruka

Igrac Delilac Ulog


Pronalaženje odgovornosti klasa
 Odgovornosti se odnose na radnje. One se mogu
prepoznati kao glagoli u izjavi o zahtevima.
 Na taj način možete dobiti spisak odgovornosti.
Naravno, treba misliti na sledeće:
 Svi glagoli iz izjave o zahtevima neće završiti kao
odgovornosti.
 Možda ćete morati da kombinujete više glagola da biste
pronašli jednu odgovarajuću odgovornost.
 Neke odgovornosti konačne verzije neće biti u vezi sa
izvornim glagolima, iz izjave o zahtevima.
 Pošto je ovo iterativni proces, moraćete da proveravate
i ažurirate i odgovornosti, i izjavu o zahtevima.
 Ako dve ili više klasa dele neku odgovornost, onda će
svaka od tih klasa imati tu odgovornost.
Pronalaženje odgovornosti klasa u
igri ajnc

 Sa gledišta igrača, cilj je uzimati karte iz špila dok


njihov zbir ne dostigne 21, ili da zbir bude što bliži broju
21, ali ne veći. Ako zbir karata u ruci igrača prelazi 21,
igrač gubi igru. Ako u prva dva izvlačenja igrač ima zbir
koji iznosi 21 - ima ajnc.
 Delilac igra sa svim igračima. On mora svima deliti
karte, davati igraču dodatne karte, prikazivati deo ili
celu ruku, izračunavati vrednost dela ili cele ruke,
brojati karte u ruci. proglasiti pobednika i početi novu
ruku.
Sastavljanje spiska mogućih
odgovornosti naše klase:
Karta
 Zna svoj broj.

 Zna svoju boju.

 Zna svoju ukupnu vrednost.

 Zna da li je štih.

 Zna da li je as.

 Zna da li je džoker
Špil
 Mešanje.

 Deljenje sledeće karte.

 Zna koliko je karata preostalo u špilu.

 Zna da li postoji potpun špil za počinjanje igre.


Ruka
 Zna koliko karata ima u ruci.

 Zna vrednost karata u ruci.


Delilac
 Deli karte.
 Meša špil.
 Daje kartu igraču.
 Pokazuje ruku delioca.
 Izračunava ukupnu vrednost ruke delioca.
 Zna broj karata u ruci delioca.
 Zahteva kartu (baca je ili zadržava).
 Utvrduje ko je pobednik.
 Počinje novu ruku.
Igrač
 Zahteva kartu (baca je ili zadržava).
 Pokazuje ruku igrača.
 Izračunava ukupnu vrednost u ruci igrača.
 Zna koliko karata ima u ruci.
 Zna da li ukupna vrednost ruke prelazi 21.
 Zna da li je ukupna vrednost ruke jednaka 21 (i ako
jeste, da li ima ajnc).
 Zna da li je ukupna vrednost ruke manja od 21.
Ulog
 Zna kakva je vrsta uloga.

 Zna vrednost tekućeg uloga.

 Zna koliko novca (imovine) igrač ima na raspolaganju


za ulaganje.
 Zna da li igrač može pokriti ulog.
Karta, analiza
 Zna svoj broj.
 Karta mora da zna svoj broj.
 prikaži broj karte.
 Zna svoju boju (karte).
 prikaži ime (koje identifikuje boju).
 Zna da li je štih.
 Mogli bismo imati posebnu odgovornost za
 štihove, asove i džokere, ali to se može rešiti
odgovornošću prikaži vrednost.
UML slučajevi korišćenja:
pronalaženje saradnji između klasa

 Da bi klase sarađivale treba proučiti odgovornosti i


utvrditi sa kojim još objektima klasa saraduje i
 Utvrditi sa kojim sve klasama ovaj objekat treba da
sarađuje, da bi ispunio sve odgovornosti koje se od
njega zahtevaju i da bi završio posao
 CRC kartice pomažu u otkrivanju klasa, dok scenarija
slučajeva korišćenja pomažu u otkrivanju saradnji.
Jedan od mogućih scenarija kad
imamo delioca i samo jednog igrača.
 Delilac meša špil.
 Igrač stavlja ulog.
 Delilac deli početne karte.
 Igrač stavlja karte u svoju ruku.
 Delilac stavlja karte u svoju ruku.
 Ruka igraču vraća ukupnu vrednost karata u njegovoj
ruci.
 Ruka deliocu vraća ukupnu vrednost karata u njegovoj
ruci.
 Delilac pita igrača da li želi još jednu kartu.
 Delilac igraču deli još jednu kartu.
 Igrač stavlja kartu u svoju ruku.
 Ruka igraču vraća ukupnu vrednost karata u njegovoj
ruci.
 Delilac pita igrača da li želi još jednu kartu.
 Delilac saznaje ukupnu vrednost karata u ruci igrača.
 Delilac igračima šalje ili od igrača zahteva vrednost
uloga.
 Igrač sabira ili oduzima iznos od atributa uloga tog
igrača
Mešanje špila i prvo deljenje karata

Delilac ResetujSpil Spil

Delilac MesajSpil Spil

JosKarata
Delilac VratiVrednost()
Spil
Dobijanje ukupne vrednosti ruke.

UzmiVrednostRuke
Igrac Ruka
vratiVrednost
Dobijanje vrednosti ruke.

UzmiKartu
Delilac vratiKartu
Spil
Deljenje karte i provera da li je igrač
izgubio

Delilac PodeliKartu Igrac

igracBankrotira
Delilac vratiVrednost
Igrac
Vraćanje ukupne vrednosti ruke.

UzmiVrednosRuke
Igrac Ruka
vratiVrednost
Da li igrač želi još karata

josKarata
Delilac D.igrac
vratiVredost()

uzmiVrednostRuke
D.igrac Ruka
vratiVrednost
CRC kartica za klasu karta

Klasa: karta
odgovornost saradanja
Uzmi ime spil
Uzmi vrednost
spil

Klasa: spil
odgovornost saradanja
Resetuj spil delilac
Uzmi velicinu spila karta
Uzmi sledecu kartu
Izmesaj spil
Prikazi spil
delilac

Klasa: Delilac
odgovornost saradanja
Pocni novu igru ruka

Uzmi kartu igrac


spil
igrac

Klasa: igrac
odgovornost saradanja
Zeli jos karata Ruka
Uzmi kartu delilac
Pokazi ruku
Uzmi vrednost ruke
ruka

Klasa: ruka
odgovornost saradanja
Vrati vrednost Igrac
Dodaj kartu delilac
Pokazi ruku

You might also like