Oblikovanje i implementacija ISa Vjebe ak god 201516
Oblikovanje i implementacija IS-a Vježbe, ak. god. 2015/16.
Terminski plan vježbi � Petak, 1. 2. 3. 4. 5. 6. 08: 00 -11: 00 h 11. 12. 2015. Class diagram 18. 12. 2015. Class diagram, Object diagram 08. 01. 2015. Use-Case diagram, seminar (class diagram) 15. 01. 2015. Sequence diagram 20. 01. 2015. Activity diagram (seminar sequence diagram) 29. 01. 2015. Seminar (activity diagram)
UML � Dizajniranje poslovnih sustava – SLOŽENO! � Problemi u interpretaciji dizajna � Unified Modeling Language � Jedinstveni jezik za modeliranje � Koristi grafički prikaz za izradu apstraktnog modela sustava
UML � Model pojednostavljeni opis sustava iz određene perspektive � Dokumentira se dijagramima � Notacije – elementi koji čine model � Semantika – opis što neka notacija znači � 1997. godine nastao UML 1. 0. � Trenutna verzija UML-a je 2. 4. 1.
Dijagrami
Dijagram klasa � Prikazuje sustav pomoću klasa (razreda) i relacija među klasama � Statički dijagram ne uzima u obzir vremensku komponentu, nego dio ili cijeli sustav u određenom trenutku � Pripada skupini strukturnih UML dijagrama
KLASA � Osnovni tvorbeni element dijagrama � Opis grupe objekata sa sličnim svojstvima STUDENT Pero Perić Marković OBJEKTI KLASA Ivanković
KLASA � Objekt entitet iz stvarnog svijeta, ima dobro definirane granice i smisao u sustavu ◦ Osoba, mjesto, događaj. . . � Objekti imaju svoje atribute (svojstva) i čine radnje (imaju operacije/metode) � Klasa je prikaz objekta, tj. predložak na temelju kojeg se oni kreiraju � Apstrakcija – odbacivanje nevažnih detalja unutar određenog konteksta
KLASA � Promatra se parkiralište � Klasa? Objekti?
KLASA � Odrediti: 1. naziv klase 2. atribute 3. operacije velikim slovom – početna slova – informacije o objektu, prva riječ malim slovom, ostatak velikim – stvari koje objekt ili klasa čine, prva riječ malim slovom, ostatak velikim Opcionalno! Narudzba. Robe -datum : date -iznos : double -kolicina : long +izvrsi() +zakljuci()
ATRIBUTI � svojstva klasa � navode se u srednjem dijelu elementa klase � imaju svoja svojstva: ◦ NAZIV – prva riječ malim slovom, početno slovo ostalih riječi velikim (broj. Indeksa), s tim da se riječi ne odvajaju razmakom. Paziti na naziv atributa! ◦ VIDLJIVOST �javno + (public) �privatno – (private) lase �zaštićeno # (protected) �paket ~ (package)
ATRIBUTI ◦ TIP �UML tipovi (boolean, integer, string, unlimited. Integer) �Java tipovi (byte, char, double, float, int) ◦ POČETNA VRIJEDNOST – inicijalna vrijednost dodana atributima (klasa automobil atribut broj. Vrata vrijednost 4) � Pravilo pisanja atributa: [vidljivost] ime. Atributa : tip. Atributa
ATRIBUTI � Tipovi atributa navode se pokraj imena, nakon znaka „ : „ ◦ STRING – tekstualni tip, za prikaz znakova �ime. Studenta : String = „Marko” ◦ INTEGER – za prikaz cijelih brojeva �broj. Indeksa : Integer = 34952 ◦ DOUBLE – za prikaz decimalnih brojeva �prosjek. Ocjena : Double = 3, 7 ◦ BOOLEAN – sadržava 2 vrijednosti: true ili false �prosao. Ispit : Boolean = true
ATRIBUTI � � Primjer: U bazi podataka fakulteta nalaze se podaci o studentima. Svaki student ima broj indeksa, ime, prezime, OIB te odabrani smjer Broj indeksa je privatni podatak, ime, prezime i smjer su javni, OIB je zaštićeni
Vidljivost � JAVNO (+) ◦ Najdostupnije obilježje ◦ Atributi/operacije izravno dostupni bilo kojoj drugoj klasi
Vidljivost � ZAŠTIĆENO (#) ◦ Atributima/operacijama može se pristupiti metodama koje su dio te klase i metodama koje su deklarirane u bilo kojoj klasi koja nasljeđuje od promatrane klase
Vidljivost � PAKET (~) ◦ Atributi/operacije dostupni samo klasama unutar istog paketa
Vidljivost � PRIVATNO (-) ◦ Atributi/operacije dostupni samo onoj klasi koja sadrži taj privatni element
OPERACIJE � procesi koje klasa može izvršiti � navode se u pravokutniku ispod atributa � svojstva operacija: ◦ vidljivost (isto kao i kod atributa) ◦ ulazni i izlazni parametri – svojstveni samo za operacije. � Pravilo pisanja operacija: [vidljivost] ime. Operacije (parametri)
OPERACIJE � Primjer: � Prikazati klasu Blagajnik koja sadrži atribute Šifra, Ime, Prezime, OIB. � Blagajnik priprema robu i izrađuje račun
Primjer: atributi i operacije � Primjer: � Promatraju se dobavljači nekog poduzeća. � Dobavljači sadržavaju sljedeće podatke: ◦ ◦ ◦ OIB (zaštićeni podatak) Naziv (javni podatak) Ukupan iznos nabave (javni podatak) Kontakt osobu (javni podatak) Telefon (privatni podatak) � Dobavljači obavljaju sljedeće operacije: ◦ Dobavljaju robu ◦ Ispostavljaju račune
� Primjer: � Svaki Definirati klasu Student student ima svoj broj indeksa, prezime, ime i prosjek ocjena. � Student može prijaviti i odjaviti ispit te mu pristupiti.
Odnosi među klasama � Objekti klase su često vezani za druge objekte studenti POLAŽU ispite, asistenti ODRŽAVAJU vježbe, referenti OVJERAVAJU indekse � Veze između klasa razlikuju se po jačini veze � Dvije klase snažno povezane jedna s drugom blisko povezane
Ovisnost � Klasa mora imati saznanja o drugoj klasi kako bi mogla koristiti objekte te klase � Najslabija veza � promjena u jednom entitetu utječe na drugi � jednosmjerna veza
Ovisnost � Primjer: �U poduzeću manager ima najvišu funkciju � Direktor prodaje nadređen je zaposlenicima u prodaji � Komercijalist obavlja poslove prodaje � Svi su oni zaposlenici poduzeća � Manager smije promicati i davati povišice svim zaposlenicima
Ovisnost
Pridruživanje (asocija) � Ukoliko klasa čini neku radnju s objektom druge klase � Jednosmjerno (unidirekcionalno) � Dvosmjerno (bidirekcionalno) � Refleskivno Ukoliko smjer nije naznačen, smatra se da je veza ili nepoznata ili dvosmjerna!
Pridruživanje - dvosmjerno � Primjer � Veza dvosmjerne veze: između klasa Osoba i Knjiga ◦ Osoba je posudila knjigu ◦ Knjiga pokazuje koje su je sve osobe posudile Osoba Knjiga
Pridruživanje - dvosmjerno � Veza uvijek ima 2 vrha, povezanih s 2 klase. � Vrhovi se nazivaju ULOGE. � Vrh može i ne mora imati naziv (može biti imenica ili glagol) � Višestrukost veze koliko objekata može sudjelovati u odnosu između 2 klase
Višestrukost veze 1 n 1. . n 2, n 3 n. . * točno 1 pojedinac 0. . * ili n više pojedinaca, neograničeno bilo koji točno određeni broj (0, 1, 5, 23) između n 1 i n 2 (5. . 8 5, 6, 7 ili 8) između n 1 i više pojedinaca kombinacija (4. . 7, 9 4, 5, 6, 7 ili 9) n ili više pojedinaca, neograničeno (5. . * 5 ili više)
Višestrukost � Ako višestrukost nije naznačena, smatra se vrijednost 1 (točno 1 pojedinac) � Primjer: Veza između klase Student i Indeks � Jedan student može imati samo jedan indeks
Višestrukost � Primjer: � Na Veza između klase Racun i Artikl računu može biti jedan ili više artikala
Višestrukost � Nakon završetka ispitnog roka profesor svaki put ispravlja točno 60 pismenih ispita Profesor Ispit 1 60
Višestrukost � Na nekom projektu profesor mora voditi barem pet studenata � Studenti mogu biti samo na jednom projektu � Ako to žele, studenti ne moraju prijaviti sudjelovanje na projektu Profesor Student 0. . 1 5. . *
Pridruživanje - refleksivno � Klasa povezana sama sa sobom. � Više pojedinaca istog razreda moraju međusobno komunicirati � Primjer: Programsko rješenje za vođenje poslovanja poduzeća koristi šifarnik u koji se unose skladišta i blagajne poduzeća. Međutim, svakoj blagajni potrebno je dodijeliti jedno skladište. Jedna blagajna je uvijek pridružena jednom skladištu �
Agregacija � jedna klasa sadrži druge klase (agregirana je u drugoj klasi) � Snažnija verzija asocijacije � oblik odnosa nadskup-podskup (cjelina-dio) � Simbol agregacije uvijek dodiruje razred nadskup, a prazna linija podskup � Automobil - motor
Agregacija � Primjer: U nekom poduzeću postoje odjeli nabave, prodaje, financija. . Zaposlenici su zaposleni u tim odjelima.
Kompozicija � slična agregaciji � uništavanjem (gašenjem, zatvaranjem) agregata (cjeline) gase se i njegovi dijelovi. � jaki tip agregacije � promatrana klasa ne može egzistirati bez druge klase
Kompozicija � Primjer: Poduzeće osim svog sjedišta može imati i nekoliko poslovnica � Zatvaranjem poduzeća, zatvaraju se i sve poslovnice. Veza 0. . *? ?
NASLJEĐIVANJE � temeljni koncept OO programiranja � između različitih klasa često postoje sličnosti ◦ mogu dijeliti iste atribute i/ili iste metode Nepotrebno ponavljanje programskog koda NASLJEĐIVANJE
NASLJEĐIVANJE � klasa A nasljeđuje od B ◦ A podklasa klase B ◦ B nadklasa klase A � „Čisto nasljeđivanje” klasa A nasljeđuje SVE atribute i metode od klase B � Jedna klasa je „roditelj” jednoj ili više drugih klasa. � Veza od podklase prema nadklasi � „sadrži” vs. „je vrsta”
NASLJEĐIVANJE � primjer: � Postoji mnogo sličnosti između klasa Student i Profesor � Imaju iste atribute i obavljaju iste metode � Zajednički atributi su ime, prezime i OIB � Zajednička metoda je kupi pokaz za tramvaj � Kreira se nova klasa Osoba od koje nasljeđuju klase Student i Profesor
NASLJEĐIVANJE
� Klasa Osoba glavna klasa. Apstraktna je jer postoji samo zbog drugih klasa koje nasljeđuju od nje (kosim slovima) � Student i Profesor imaju iste atribute i metode koji se pišu u klasi Osoba � Nasljeđivanjem se smanjila količina potrebnog posla � Atributi i metode se implementiraju samo jednom, u klasi Osoba
Ponavljanje � Vrsta 1. 2. 3. 4. veze na slici: Kompozicija Ovisnost Agregacija Asocija
Ponavljanje � Vrsta 1. 2. 3. 4. veze na slici: Kompozicija Ovisnost Agregacija Asocija
Ponavljanje � Kako 1. 2. 3. 4. se zove navedena vrsta pridruživanja: Ovisno Refleksivno Generalno Samostalno
Ponavljanje � Koji atribut je ispravno napisan? 1. 2. 3. 4. Ukupan. Iznos. Racuna : double Ukupan. Iznos. Racuna : int ukupan iznos : double ukupan. Iznos : double
Ponavljanje � Strelicom je označeno? Narudzba. Robe -datum : date -iznos : double -kolicina : long 1. 2. 3. 4. operacije nasljeđivanje atributi notacija +izvrsi() +zakljuci()
Ponavljanje � Za atribut pod nazivom „u. Sustavu. Pdv”, koji označava je li poslovni subjekt u sustavu PDV -a ili nije, koristit će se sljedeći tip atributa: 1. 2. 3. 4. double int boolean string
Ponavljanje � Ako se uništavanjem neke nadklase uništavaju i njezine podklase koristi se – koja vrsta zavisnosti? 1. 2. 3. 4. kompozicija generalizacija agregacija asocija
� � � Neki fakultet sastoji se od jednog ili više zavoda, a svaki zavod od jedne ili više zavodskih grupa. Zavodsku grupu čine zaposlenici. Zaposlenici mogu raditi i u nekoliko zavodskih grupa Postoje dva konkretna tipa zaposlenika: predavači i asistenti. Svaki predavač ima barem jedan kolegij koji predaje, a svaki asistent drži vježbe iz barem jednog kolegija. Svaki kolegij može imati jednog ili više predavača i asistenata. Asistent ima jednog predavača u funkciji mentora, a predavač može imati više asistenata. Svaki kolegij se sastoji od više predavanja i više vježbi i ima svoj naziv (String). Ukidanjem kolegija ukidaju se predavanja i vježbe Student je zasebna kategorija u organizaciji fakulteta i u ovom modelu pretpostavite samo da sluša jedan ili više kolegija. I student i zaposlenik su osobe. Svaka osoba ima svoje ime i prezime. Dodatno, svaki zaposlenik ima svoj matični broj zaposlenika (String), a svaki student svoj JMBAG (String). Fakultet ima svoj matični broj (String) i naziv (String). Zavod ima svoj naziv (String) i broj računa (String). Zavodske grupe imaju svoj naziv grupe te naziv glavnog laboratorija (String).
� � � � � Neko poduzeće sastoji se od jednog ili više odjela, a na čelu svakog odjela je direktor odjela. Svaki odjel može imati više pododjela. Svaki pododjel ima svog direktora pododjela i radnike. Postoje dva tipa zaposlenika: direktori i radnici. Nadalje, direktori mogu biti direktori odjela ili direktori pododjela. Svaki zaposlenik može raditi na više poslova, a svaki posao može raditi nijedan ili više zaposlenika. Konkretni posao može biti administrativni ili razvojni. Svaki posao ima svoj naziv (String) i rok dovršenja (Date). Ako je posao razvojni, onda on sadrži i matični broj nekog drugog poduzeća (String) za koje se takav posao obavlja. Direktor odjela može zaposliti ili otpuštati sve direktore pododjela i sve radnike u pododjelima (oni ovise o njemu). Direktor pododjela ne može otpuštati niti zapošljavati radnika, ali ima opciju da upita direktora odjela ako se ukaže potreba za otpuštanjem ili zapošljavanjem radnika. Poduzeće ima svoj matični broj (String), broj računa (String) i ukupan broj zaposlenika (int). Svaki odjel ima svoj naziv i adresu, a svaki pododjel, osim naslijeđenog naziva i adrese odjela, ima i vlastiti naziv. Svaki zaposlenik ima svoj matični broj u poduzeću i ime i prezime.
Dijagram objekata � Objekt instanca klase � Strukturni UML dijagram � Prikazuju strukturu sustava u nekom trenutku � Prikaz može biti djelomičan ili cjelovit � Generiraju se iz dijagrama klasa Objekt : Klasa atribut 1 : vrijed. atribut 2 : vrijed. atribut 3 : vrijed. Naziv objekta podcrtano) Atributi vrijednosti) (piše se (samo naziv i
� Često se naziva dijagram instanci � Objekti sustava imaju različite vrijednosti atributa koje se prikazuju dijagramom objekata � Prikazuju se samo atributi po kojima se pojedinci unutar dijagrama međusobno razlikuju (specifični) � Pojedinci se razlikuju po barem jednom atributu � Ne mogu postojati dva pojedinca s istim svim atributima
Primjer � Klasa Osoba ima atribute: šifra (int), ime (string), prezime (string) i OIB (int). Šifra je zaštićena, ime, prezime i OIB su javni podaci. � Izraditi 3 pojedinca navedene klase s proizvoljnim vrijednostima atributa 1. 2. Definirati klasu Osoba Definirati 3 objekta klase Osoba
Veze � Najčešća veza dvosmjerna � Moguća i kompozicija � Ako su dvije klase povezane nasljeđivanjem, veza između njihovih objekata bit će dvosmjerna � Višestrukost veze je uvijek 1
Izrada dijagrama 1. 2. 3. Odabiru se klase čiji se objekti prikazuju. Najčešće su to najvažnije klase za ispravno funkcioniranje sustava. Unos proizvoljnih vrijednosti u objekte, ali pazimo da one ispravno demonstriraju vrijednosti koje će atributi imati tijekom rada sustava. Povezivanje objekata, označavanje veze gdje je to potrebno
Primjer � Student (ime, prezime, broj indeksa, OIB) u zimskom ispitnom roku polaže 3 ispita
Nasljeđivanje � Pojedinci klase koji nasljeđuju druge klase automatski nasljeđuju i sve atribute klase roditelja
Primjer
Zadatak neko poduzeće sastoji se od 2 poslovnice � na čelu svake poslovnice nalazi se voditelj � u poslovnicama radi 2 vrste zaposlenika: voditelji (Marko Jurić i Ivan Tadić) i 4 komercijalista (Ivan Šarić, Pero Katić, Domagoj Ivić, Josip Radić) – po 2 komercijalista u svakoj poslovnici � komercijalisti izdaju račune kupcima � računi mogu biti veleprodajni i maloprodajni � voditelj poslovnice može zaposliti ili otpustiti sve radnike koji ovise o njemu � poduzeće ima svoj naziv, adresu, mjesto, OIB, matični broj žiroračuna � poslovnice imaju svoju šifru, naziv, adresu i mjesto � svaki zaposlenik ima svoj JMBG, ime i prezime � Voditelj još ima atribut „broj mobitela”, a komercijalist „ukupna prodaja” � � Potrebno je kreirati class dijagram, a potom i dijagram objekata
Dijagram slučajeva korištenja (Use -case) � Prikazuju ponašanje sustava na način vidljiv korisniku sustava, ne opisuju kako je funkcionalnost izvedena unutar sustava � Kreira se u ranim fazama oblikovanje (najčešće kao prvi dijagram) � Slučajevi korištenja predstavljaju vanjski pogled na sustav � Ne postoje korelacije između slučajeva korištenja i klasa unutar sustava � Pozornost – ne na dijagram i kompleksnost dijagrama nego na opise dijelova dijagrama � Grubi prikaz što sustav radi, a ne kako radi
Simboli � Scenarij – slijed koraka koji opisuju interakciju između korisnika i sustava � Primjer scenarija: Web trgovina Kupac pretražuje web katalog proizvoda i dodaje željene proizvode u košaricu. U trenutku kupnje, kupac odabire mjesto dostave te daje podatke o kreditnoj kartici i potvrđuje prodaju. Sustav provjerava autorizaciju kreditne kartice, potvrđuje prodaju i šalje e-mail potvrde.
� Jedina moguća situacija? � Autorizacija kreditne kartice – neuspješna poseban scenarij � „obični kupac” koji ne mora dati adresu dostave i informacije o kartici poseban scenarij Svi scenariji su različiti, ali i slični. U čemu? KORISNIK IMA ISTI CILJ – KUPITI PROIZVOD � Korisnik ne mora uvijek uspjeti, ali cilj ostaje � Korisnikov cilj je ključ za use-case!
Simboli � Slučaj korištenja apstraktni zadatak kojeg izvode sudionici ◦ Skup scenarija povezanih zajedničkim ciljem korisnika ◦ Pisati kao glagol (radnja) jednostavnost � Sudionik vanjski entitet direktno povezan sa sustavom, ali nije dio sustava ◦ Inicijator svih akcija ◦ Imaju imena koja ne bi smjela biti povezana s organizacijom poduzeća ◦ Živo biće ili neki drugi sustav (npr. računalo) ◦ Pisati kao imenicu u jednini
Postupak pisanja use-casea 1. 2. 3. 4. Odabir jednog od mogućih scenarija kao glavnog (uspješnog) scenarija Glavni (uspješni) scenarij je prikaz niza koraka Uzimaju se ostali scenariji i navode se kao alternative, opisujućih ih kao varijacije glavnog uspješnog scenarija Alternative mogu biti uspjesi ili neuspjesi
Kupovina proizvoda � Glavni 1. 2. 3. 4. 5. 6. 7. 8. scenarij: Kupac pregledava katalog i odabire proizvode Kupac potvrđuje proizvode Kupac upisuje informacije o dostavi (npr. idući dan ili za 3 dana) Sustav prikazuje punu cijenu sa dostavom Kupac popunjava informacije o kred. kartici Sustav autorizira kupnju Sustav potvrđuje prodaju Sustav šalje e-mail potvrde kupcu
Podizanje novca s bankomata � Glavni 1. 2. 3. 4. 5. 6. 7. 8. scenarij: Klijent ubacuje karticu u bankomat Sustav traži PIN Klijent upisuje PIN Klijent potvrđuje unos tipkom Enter Sustav provjerava valjanost PIN-a Kartica autorizirana, sustav traži da klijent unese željeni iznos Klijent unosi iznos i potvrđuje ga Sustav isplaćuje novac klijentu
� Svaki use-case ima primarnog sudionika � Primarni sudionik – sudionik s ciljem kojeg slučaj korištenja pokušava provesti i obično je (ali ne uvijek) inicijator use-casea � Primarni sudionik se postavlja u gornji lijevi ugao dijagrama � Postoje i drugi sudionici s kojima sustav komunicira dok se izvodi use-case sekundarni sudionici � Sudionici se postavljaju izvan prostora Use-Case dijagrama � Kao naziv ne treba pisati titulu koju sudionik ima, već posao koji obavlja (umjesto Voditelj korisničke podrške napisati Korisnička podrška)
� Poželjno je navoditi slučajeve korištenja onim slijedom kojim se izvode i zadaci � Svaki korak u slučaju korištenja je element interakcije između sudionika i sustava � Svaki korak bi trebao biti jednostavna izjava i jasno pokazati tko pokreće koji korak � Korak pokazuje namjeru sudionika
Veze � Veza između sudionika i slučaja korištenja prikazuje se ravnom linijom bez strelica � Može biti: ◦ Između sudionika i slučaja korištenja ◦ Dva ili više sudionika
Tipovi veza Pridruživanje (asocija) Generalizacija Uključivanje Proširenje
Asocija � Sudionici se povezuju sa slučajevima korištenja � Moguće koristiti i višestrukosti � Klijent može izraditi najviše 1 narudžbu, dok se u istom trenutku može odvijati 0 ili više narudžbi različitih klijenata
Generalizacija � Povezuju se: ◦ 2 sudionika – specifičniji sudionik preuzima sve uloge apstraktnijeg ◦ 2 SK – specifičniji proširuje funkcionalnosti apstraktnijeg ◦ Apstraktni iznad specifičnog
Uključivanje (include) � Povezuju se 2 SK na način da 1 slučaj u tijeku svog izvođenja u potpunosti izvede uključeni SK � Uključeni – desno od glavnog
Uključivanje (include) � Kaže se da prvi use-case uključuje (includes) drugog � Uključeni slučajevi korištenja koriste se: ◦ za kompleksne korake radi preglednosti glavnog scenarija ◦ za korake koji se ponavljaju u nekoliko slučajeva korištenja � Npr. � „Otprema robe” uključuje „ažuriranje stanja na skladištu”
Proširenje (extend) � Povezuju se 2 SK pri čemu jedan proširuje funkcionalnost drugog ako je zadovoljen određen uvjet u točki proširenja � „detaljniji” use-case � Jedan use-case dodaje funkcionalnosti drugom use-caseu pod određenim okolnostima � Npr. Login use-case tipične Web stranice uključuje Registraciju novog korisnika – ali samo ako korisnik već nema račun
Proširenje (extend) � Jedan slučaj korištenja je osnovni, drugi je proširujući � Veza uvijek ide od proširujućeg prema osnovnom
Primjer: � Klijent može zatražiti otvaranje jednog računa, podići novac s računa te zatražiti zatvaranje računa � Osobni bankar mu ove akcije mora omogućiti ako su osobni dokumenti u redu (klijent ih daje na provjeru) � Osobni bankar također može podnijeti upravitelju zahtjev za povećanje svoje plaće � Pretpostavka je da postoje i drugi zaposlenici osim osobnih bankara koji mogu zatražiti povećanje plaće � Dvojica upravitelja razmatraju povišenja plaća i eventualno podižu plaću
Zadatak 2 – Upravljanje hotelom � Administrator sustava može konfigurirati sustav (upis svih raspoloživih soba, parkirnih mjesta i cjenika) � Korisnici preko interneta mogu pretražiti hotelsku ponudu i napraviti rezervaciju sobe. Prilikom rezervacije mogu opcionalno rezervirati parkirno mjesto, dokupiti doručak, polupansion ili puni pansion � Recepcioner hotela može izdati sobu i napraviti naplatu. Kod izdavanja sobe provjerava rezervaciju i programira karticu za otvaranje sobe. Prilikom naplate izdaje račun i naznačuje da soba postaje slobodna
Zadatak 3 – rent-a-car Korisnici mogu preko interneta napraviti i otkazati rezervaciju vozila. Kod stvaranja rezervacije moraju unijeti broj kred kartice � Kod stvaranja rezervacije mogu prema želji i raspoloživim resursima napraviti i rezervaciju za GPS, dječju sjedalicu, krovne nosače � Kad korisnici dođu u poslovnicu po auto, zaposlenik provjerava rezervaciju � Zaposlenik ispisuje obrazac o preuzimanju koji se skenira i unosi u računalo. Nakon toga odvodi klijenta do auta i predaje mu ključeve i prometnu dozvolu � Kod povratka automobila korisnik dolazi u poslovnicu, predaje obrazac o preuzimanju, prometnu dozvolu i ključeve � Zaposlenik odlazi s korisnikom do auta, provjerava stanje auta i količinu goriva. Zatim generira račun i odobrava terećenje kreditne kartice �
Zadatak 4: � Potrebno je izraditi use-case dijagram za prodaju karata na autobusnom kolodvoru � Sustav koriste blagajnici i putnici � Blagajnik prodaje kartu putniku � Prodaja karte uključuje odabir relacije i naplatu � Naplata se može izvršiti u gotovini ili putem kartice � U slučaju da se naplata vrši putem kartice u naplati sudjeluje putnik utipkavanjem PIN-a � Opcionalno kod prodaje karte blagajnik može izdati R 1 račun � Uz prodaju karata blagajnik može napraviti i rezervaciju karte � Rezervaciju karte može napraviti i putnik samostalno preko telefonskog automata
SEKVENCIJSKI DIJAGRAM � Dijagram slučajeva korištenja opisuje što sustav mora biti u mogućnosti napraviti � Dijagram klasa opisuje različite dijelove koji čine strukturu sustava � Sekvencijski dijagram opisuje kako će sustav zapravo napraviti neke zadatke � Daje naglasak na vremenskom redoslijedu kojim se odvija interakcija sudionika � Prikazuje slijed događaja među objektima ili među sudionicima
� Ako su use-case dijagrami prethodno definirani, sekvencijski dijagram je njihova realizacija � Pokazuje kronološki redoslijed događaja i operacija � Definiraju se: ◦ Objekti (sudionici) ◦ Poruke
Sudionici Naziv. Sudionika Sudionik Životna linija sudionika Naziv. Sudionika vrijeme
Događaji i poruke Naziv. Sudionika 1 Naziv. Sudionika 2 Poruka(parametri) Pošiljatelj poruke Primatelj poruke Povratna poruka Aktivator (opcionalno) Poruka Aktivator (opcionalno)
Poruke � Sinkrona � Asinkrona � Povratna poruka � Kreiranje sudionika � Brisanje <<create>> sudionika Sudionik <<destroy>> ×
Primjer: � Potrebno je modelirati otvaranje računa klijenta u banci sekvencijskim dijagramom. � Klijent najprije zatraži otvaranje novog računa. � Osobnom bankaru je za akciju otvaranja računa potreban identifikacijski dokument klijenta. Također, za tu akciju treba naplatiti iznos od 50 kuna. � Osobni bankar zato najprije zatraži od klijenta identifikacijski dokument i 50 kuna. � U slučaju da klijent nema dokument ili 50 kuna, međudjelovanje se obustavlja i klijent odlazi. � Inače, klijent predaje dokument i novac, a osobni bankar otvara račun u bazi podataka. � Čim je račun otvoren, osobni bankar to potvrđuje klijentu i time je međudjelovanje završeno.
Primjer 1. Pronaći sudionike u interakciji ◦ Klijent, osobni bankar, baza podataka (pasivni sudionik) Klijent Osobni. Bankar Baza. Podataka
2. Analizirati rečenice po redu, uvijek tražeći prvu sljedeću poruku između 2 sudionika „Klijent najprije zatraži otvaranje novog računa” � Sa životne linije klijenta šalje se poruka prema osobnom bankaru � Sadrži praznu listu argumenata
Klijent Osobni. Bankar Baza. Podataka zatrazi_otvaranje_racuna() � Poruka između klijenta i bankara je sinkrona. Pošiljatelj uvijek čeka na rezultat! � Klijent će čekati na odgovor bankara � Ako nije jasno naveden tip poruke, pretpostavlja se sinkrona poruka � Označava se punom strelicom na vrhu
Izgled poruke *[uvjet] naziv_poruke (parametri) • • Znak * označava iteraciju: poruka se šalje dok god je uvjet ispunjen Ako nema znaka *, poruka se šalje samo jednom ukoliko je ispunjen uvjet
Primjer � „Osobnom bankaru je za akciju otvaranja računa potreban identifikacijski dokument klijenta. Također za tu akciju treba naplatiti iznos od 50 kn. Osobni bankar zato najprije zatraži od klijenta ID i 50 kn. ” � Šalje se povratna poruka (Bankar klijent). Crta se isprekidanom linijom � Crta se nakon sinkrone poruke
Klijent Osobni. Bankar zatrazi_otvaranje_racuna() zatrazi_id_i_50 kn() AKTIVATOR Baza. Podataka
� „U slučaju da klijent nema dokument ili 50 kuna, međudjelovanje se obustavlja i klijent odlazi. Inače, klijent predaje dokument i novac. . . ” � UVJETI: da klijent ima ID i 50 kn. Tek tada mu bankar smije otvoriti račun
Klijent Osobni. Bankar zatrazi_otvaranje_racuna() zatrazi_id_i_50 kn() [ima_id && ima_50 kn] predaj (id, 50 kn) UVJETI Baza. Podataka
�. . . a osobni bankar otvara račun u bazi podataka. Čim je račun otvoren osobni bankar to potvrđuje klijentu i time je međudjelovanje završeno. “
Klijent Osobni. Bankar Baza. Podataka zatrazi_otvaranje_racuna() zatrazi_id_i_50 kn() [ima_id && ima_50 kn] predaj (id, 50 kn) otvori_racun() racun_otvoren potvrda_racun_otvoren
Zadatak � potrebno je modelirati sekvencijskim dijagramom kupovinu čokolade u trgovini � kupac sa police trgovine odabire željenu čokoladu po cijeni od 7, 50 kn � sa odabranim proizvodom dolazi na blagajnu, gdje blagajnik na kasi otkucava barcode sa proizvoda, a iz baze podataka se prikazuje cijena � blagajnik od kupca traži potvrdu da neće ništa više kupiti te otkucava račun � nakon ispostavljanja računa kupcu, od njega traži iznos od 7, 50 kn � kupac predaje novac, a blagajnik vraća eventualni ostatak
Dijagrami aktivnosti � Prikazuju funkcionalnost softverskog sustava iz perspektive unutrašnjosti sustava � Ne prikazuju niti sudionike niti vanjsko sučelje prema krajnjim korisnicima � Prikazuju radni tok aktivnosti koje se obavljaju u sustavu korak po korak � Naglasak na jednostavnosti i poslovnim operacijama koje se odvijaju slijedno, jedna za drugom � Koriste se za modeliranje poslovnog porcesa
Temeljni elementi 1. Početno i konačno stanje 2. Aktivnost
Temeljni elementi 3. Prijelaz između aktivnosti 4. Odluka (if-else) i spajanje Aktivnost Da Ne Aktivnost
Temeljni elementi 5. Račvanje (fork) i skupljanje (join) Aktivnost 2 Aktivnost 3 - Za paralelne aktivnosti
Temeljni elementi 6. Signal (događaj) ◦ Šaljući signal ◦ Primajući signal ◦ Vremenski signal
Signali � Signali pokazuju da na neku aktivnost djeluju određeni događaji iz vanjskog procesa � (autorizacija kartičnog plaćanja podrazumijeva verifikaciju kartice od strane davatelja kartice – banke) � Takva aktivnost konstantno „sluša” signale, a dijagram definira kako aktivnost reagira
Primjer � Odjel prodaje nekog poduzeća zaprima narudžbu kupca � Prvi korak je ispunjavanje narudžbenice i slanje računa kupcu � Prilikom ispunjavanja narudžbenice kupac odabire način dostave koji može biti noćni (prioritetni) ili regularni � Nakon nekog vremena od slanja računa, poduzeće zaprima uplatu kupca � Zaprimanjem uplate i slanjem robe narudžba se završava
Početno stanje Račvanje Aktivnost Odluka Tijek (prijelaz) Spajanje Skupljanje Konačno stanje
Skupljanje (join) � Kod aktivnosti koje se odvijaju paralelno nije bitan redoslijed odvijanja aktivnosti ◦ Svejedno je hoće li se prvo ispuniti narudžbenica, poslati račun, dostaviti roba pa primiti uplata ili će se poslati račun, primiti uplata, ispuniti narudžbenica i tek na kraju dostaviti � Paralelne aktivnosti negdje moraju završiti � Iz tog razloga se koristi skupljanje (nije moguće završiti narudžbu dok roba nije dostavljena) � Odlazni tok može se pokrenuti nakon što su svi dolazni tokovi dosegli element „skupljanje”
Odluke /spajanja � Uvjetna ponašanja definiraju se odlukama ili spajanjima � ODLUKA – jedan ulazni tok, više izlaznih � SPAJANJE – više ulaznih tokova, jedan izlazni � Spajanje označava kraj uvjetnog ponašanja započetog odlukom
Plivaće staze � Aktivnosti raspoređene u vertikalne ili horizontalne „staze”, razgraničene linijama � Jedina svrha - organizacijska
Zadatak – narudžba pizze � Kupac zove pizzeriu i naručuje pizzu � Konobar zapisuje narudžbu od kupca i upisuje osobne podatke � U isto vrijeme narudžbu šalje u kuhinju i priprema račun � Kuhar zaprima narudžbu i počinje s pravljenjem tijesta � Tijesto stavlja u posudu te na tijesto stavlja sve potrebne sastojke. Ukoliko nema sve sastojke odlazi u skladište po ono što mu nedostaje � Na kraju pizzu stavlja u peć � Nakon 10 min pizza je pečena � Konobar preuzima pizzu, reže ju, stavlja u kutiju i priprema posudice s kečapom � Dostavljač uzima pizzu i račun i nosi ju kupcu
- Slides: 120