web aplikacija - skola stranih jezika
TRANSCRIPT
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
1/86
Univerzitet u Beogradu
Fakultet organizacionih nauka
Laboratorija za softversko inženjerstvo
Seminarski rad iz predmeta
Napredne Java tehnologije
Tema: Web aplikacija za praćenje rada škole stranih jezika
Profesor:
dr Siniša Vlajić
Student:
Jovana Milošević 176/11
Beograd, 2016.
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
2/86
2
Sadržaj 1. Korisnički zahtevi................................................................................................................................... 5
1.1 Verbalni opis ................................................................................................................................. 5
1.2 Slučajevi korišćenja ....................................................................................................................... 5
1.2.1 SK 1 : Slučaj korišćenja – Unos polaznika škole..................................................................... 6
1.2.2 SK 2 : Slučaj korišćenja – Izmena polaznika škole ...................................................................... 7
1.2.3 SK3: Slučaj korišćenja – Pretraga polaznika škole ................................................................. 8
1.2.4 SK 4 : Slučaj korišćenja – Brisanje polaznika škole ................................................................ 9
1.2.5 SK 5 : Slučaj korišćenja – Unos novog kursa ....................................................................... 10
1.2.6 SK 6 : Slučaj korišćenja – Pretraga kurseva ......................................................................... 11
1.2.7 SK 7 : Slučaj korišćenja – Unos računa (Složen) .................................................................. 12
1.2.8 SK 8 : Slučaj korišćenja – Pretraga računa........................................................................... 13
1.2.9 SK 9 : Slučaj korišćenja – Brisanje računa ........................................................................... 14
1.2.10 SK10: Slučaj korišćenja - Izmena računa .................................................................................. 15
1.2.10 SK 11 : Slučaj korišćenja – Prijavljivanje zaposlenog ........................................................... 16
2. Analiza ................................................................................................................................................. 17
2.1 . Ponašanje softverskog sistema – Sistemski dijagrami sekvenci ............................................. 17
DS1: Dijagram sekvenci slučaja korišćenja - Unos polaznika škole .................................................... 17
DS2 : Dijagram sekvenci slučaja korišćenja – Izmena polaznika škole ................................................ 18
DS3 : Dijagram sekvenci slučaja korišćenja – Pretraga polaznika škole .............................................. 21
DS4 : Dijagram sekvenci slučaja korišćenja – Brisanje polaznika škole .............................................. 22
DS5 : Dijagram sekvenci slučaja korišćenja – Unos novog kursa ........................................................ 25
DS6 : Dijagram sekvenci slučaja korišćenja – Pretraga kurseva .......................................................... 26
DS7 : Dijagram sekvenci slučaja korišćenja – Unos računa ................................................................. 29
DS8 : Dijagram sekvenci slučaja korišćenja – Pretraga računa ........................................................... 30
DS9 : Dijagram sekvenci slučaja korišćenja – Brisanje računa ............................................................ 32
DS10 : Dijagram sekvenci slučaja korišćenja – Izmena računa ........................................................... 35
DS11 : Dijagram sekvenci slučaja korišćenja – Prijavljivanje zaposlenog ........................................... 38
2.2. Ponašanje softtverskog sistema – Definisanje ugovora o sistemskim operacijama ................ 40
2.2.1. Ugovor UG1: ZapamtiPolaznika .......................................................................................... 40
2.2.2. Ugovor UG2: PretraziPolaznike ........................................................................................... 40
2.2.3. Ugovor UG3: UcitajPolaznika .............................................................................................. 40
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
3/86
3
2.2.4. Ugovor UG4: ObrisiPolaznika .............................................................................................. 40
2.2.5. Ugovor UG5: UcitajJezike .................................................................................................... 40
2.2.6. Ugovor UG6: UcitajZaposlene ............................................................................................. 41
2.2.7. Ugovor UG7: ZapamtiKurs .................................................................................................. 41
2.2.8. Ugovor UG8: UcitajKurs ...................................................................................................... 41
2.2.9. Ugovor UG9: PretraziKurseve ............................................................................................. 41
2.2.10. Ugovor UG10: UcitajKurseve .............................................................................................. 42
2.2.11. Ugovor UG11: UcitajPolaznike ............................................................................................ 42
2.2.12. Ugovor UG12: UnosNovogRacuna ...................................................................................... 42
2.2.13. Ugovor UG13: ZapamtiRacun ............................................................................................. 42
2.2.14. Ugovor UG14: PretraziRacune ............................................................................................ 42
2.2.15. Ugovor UG15: UcitajRacun ................................................................................................. 43
2.2.16. Ugovor UG16: ObrisiRacun ................................................................................................. 43
2.2.17. Ugovor UG17: NadjiZaposlenog .......................................................................................... 43
2.3. Struktura softverskog sistema – Konceptualni (domenski) model ............................................. 44
2.4. Struktura softverskog sistema – Relacioni model ....................................................................... 46
3. Projektovanje ...................................................................................................................................... 49
3.1 Arhitektura softverskog sistema ....................................................................................................... 49
3.2. Projektovanje aplikacione logike ................................................................................................ 50
3.2.1 Komunikacija sa klijentima ........................................................................................................ 50
3.2.2 Kontroler aplikacione logike ............................................................................................... 51
3.3. Projektovanje ponašanja softverskog sistema – sistemske operacije ........................................ 52
Ugovor UG1: ZapamtiPolaznika .......................................................................................................... 52
Ugovor UG2: PretraziPolaznike ........................................................................................................... 52
Ugovor UG3: UcitajPolaznika .............................................................................................................. 53
Ugovor UG4: ObrisiPolaznika .............................................................................................................. 53
Ugovor UG5: UcitajJezike .................................................................................................................... 54
Ugovor UG6: UcitajZaposlene ............................................................................................................. 54
Ugovor UG7: ZapamtiKurs .................................................................................................................. 55
Ugovor UG8: UcitajKurs ...................................................................................................................... 55
Ugovor UG9: PretraziKurseve ............................................................................................................. 56
Ugovor UG10: UcitajKurseve .............................................................................................................. 56
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
4/86
4
Ugovor UG11: UcitajPolaznike ............................................................................................................ 57
Ugovor UG12: UnosNovogRacuna ...................................................................................................... 58
Ugovor UG13: ZapamtiRacun ............................................................................................................. 58
Ugovor UG14: PretraziRacune ............................................................................................................ 59
Ugovor UG15: UcitajRacun ................................................................................................................. 59
Ugovor UG16: ObrisiRacun ................................................................................................................. 60
Ugovor UG17: NadjiZaposlenog .......................................................................................................... 60
3.4. Projektvanje strukture softverskog sistema ............................................................................... 63
3.5. Broker baze podataka ................................................................................................................. 81
3.6. Projektovanje skladišta podataka ............................................................................................... 81
4. Implementacija ....................................................................................................................................... 84
5. Testiranje................................................................................................................................................ 85
6. Literatura............................................................................................................................................. 85
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
5/86
5
1. Korisnički zahtevi
1.1 Verbalni opis
Potrebno je napraviti web aplikaciju koja omogućava vođenje evidencije rada škole stranih
jezika – prijavljivanje zaposlenog, vođenje evidencije o kursevima i polaznicima kao i o uplatama
(računima polaznika).
Aplikacija treba da vodi evidenciju o polaznicima kurseva, da omogući pretragu polaznika prema
određenim vrednostima kao i unos novih polaznika, izmenu podataka o postojećim i brisanje
istih.
Za svakog polaznika, potrebno je voditi evidenciju o računima preko kojih se reguliše pohađanje
kurseva (unos novog, pretraga, izmena i brisanje računa).
Takođe, potrebno je voditi evidenciju o postojećim kursevima, omogućiti pretragu i unos novogkursa.
Korisnik sistema je Zaposleni. Da bi zaposleni mogao da vrši izmene nad podacima u sistemu
potrebno je da bude prijavljen pod svojim korisničkim imenom i šifrom.
1.2 Slučajevi korišćenja
Definisani su sledeći slučajevi korišćenja koji su prikazani i na slici 1:
1. Unos polaznika
2.
Izmena polaznika
3. Pretraga polaznika
4. Brisanje polaznika
5.
Unos novog kursa
6. Pretraga kurseva
7. Unos računa
8. Pretraga računa
9. Izmena računa
10. Brisanje računa
11.
Prijavljivanje zaposlenog
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
6/86
6
1.2.1
SK 1 : Slučaj korišćenja – Unos polaznika škole
Nаziv SK
Unos novog polaznika škole
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (progrаm)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa polaznicima.
Osnovni scenаrio SK
1.
Zaposleni unosi podatke o novom polazniku. (APUSO)
2. Zaposleni kontroliše da li je korektno uneo podatke o novom polazniku. (ANSO)
3. Zaposleni poziva sistem da zapamti podatke o novom polazniku. (APSO)
4. Sistem pamti podatke o novom polazniku. (SO)
5. Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio polaznika”. (IA)
Alternаtivnа scenаrijа
5.1. Ukoliko sistem ne može da zapamti podatke o novom polazniku on prikazuje
zaposlenom poruku: “Sistem ne može da zapamti novog polaznika”. Prekida se izvršavanje
scenarija. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
7/86
7
1.2.2 SK 2 : Slučaj korišćenja – Izmena polaznik a škole
Naziv SK
Izmena polaznika škole
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa polaznicima.
Osnovni scenario SK
1.
Zaposleni unosi vrednosti po kojima pretražuje polaznike. (APUSO)
2. Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)
3. Sistem traži polaznike po zadatim vrednostima. (SO)
4. Sistem prikazuje zaposlenom nađene polaznike. (IA)
5. Zaposleni bira polaznika koga želi da izmeni. (APUSO)
6. Zaposleni poziva sistem da učita podatke o izabranom polazniku. (APSO)
7. Sistem pronalazi podatke o izabranom polazniku. (SO)
8. Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)
9. Zaposleni unosi (menja) podatke o polazniku. (APUSO)
10.
Zaposleni kontroliše da li je korektno uneo podatke o polazniku. (ANSO)
11. Zaposleni poziva sistem da zapamti podatke o polazniku. (APSO)
12. Sistem pamti podatke o polazniku. (SO)
13. Sistem prikazuje zaposlenom poruku: “Sistem je izmenio podatke o polazniku.” (IA)
Alternativna scenarija:
4.1. Ukoliko sistem ne može da nađe polaznike, on prikazuje zaposlenom poruku: “Sistem
ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
8.1. Ukoliko sistem ne može da nađe podatke o polazniku, on prikazuje zaposlenom
poruku: “Sistem ne može da nađe podatke o izabranom polazniku”. Prekida se izvršenje
scenarija. (IA)
13.1. Ukoliko sistem ne može da zapamti podatke o polazniku on prikazuje zaposlenom
poruku: “Sistem ne može da zapamti polaznika”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
8/86
8
1.2.3
SK3: Slučaj korišćenja – Pretraga polaznika škole
Naziv SK
Pretraga polaznika škole
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa polaznicima.
Osnovni scenario SK
1.
Zaposleni unosi vrednosti po kojima pretražuje polaznike. (APUSO)
2. Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)
3. Sistem traži polaznike po zadatim vrednostima. (SO)
4. Sistem prikazuje zaposlenom nađene polaznike. (IA)
5. Zaposleni bira polaznika čije podatke želi da vidi. (APUSO)
6. Zaposleni poziva sistem da prikaže podatke o izabranom polazniku. (APSO)
7. Sistem pronalazi podatke o izabranom polazniku. (SO)
8. Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)
Alternativna scenarija
4.1. Ukoliko sistem ne može da nađe polaznike on prikazuje zaposlenom poruku: “Sistem
ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
8.1. Ukoliko sistem ne može da nađe izabranog polaznika on prikazuje zaposlenom poruku:
“Sistem ne može da nađe podatke o izabranom polazniku”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
9/86
9
1.2.4
SK 4 : Slučaj korišćenja – Brisanje polaznika škole
Naziv SK
Brisanje polaznika škole
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa polaznicima.
Osnovni scenario SK
1.
Zaposleni unosi vrednosti po kojim pretražuje polaznike. (APUSO)
2. Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)
3. Sistem traži polaznike po zadatim vrednostima. (SO)
4. Sistem prikazuje zaposlenom nađene polaznike. (IA)
5. Zaposleni bira polaznika kojeg želi da obriše. (APUSO)
6. Zaposleni poziva sistem da obriše polaznika. (APSO)
7. Sistem briše polaznika. (SO)
8. Sistem prikazuje zaposlenom poruku: “Sistem je obrisao polaznika.” (IA)
Alternativna scenarija
4.1. Ukoliko sistem ne može da nađe polaznike on prikazuje zaposlenom poruku: “Sistem
ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
8.1. Ukoliko sistem ne može da obriše polaznika on prikazuje zaposlenom poruku: “Sistem
ne može da obriše polaznika”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
10/86
10
1.2.5
SK 5 : Slučaj korišćenja – Unos novog kursa
Nаziv SK
Unos novog kursa
Aktori SK
Zaposleni
Učesnici SK
Zaposleni i sistem (progrаm)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa kursevima. Učitana je lista jezika. Učitana je lista zaposlenih.
Osnovni scenаrio SK
1. Zaposleni unosi podatke o novom kursu. (APUSO)
2. Zaposleni kontroliše da li je korektno uneo podatke o novom kursu. (ANSO)
3. Zaposleni poziva sistem da zapamti podatke o novom kursu. (APSO)
4. Sistem pamti podatke o novom kursu. (SO)
5. Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio kurs”. (IA)
Alternаtivnа scenаrijа
5.1. Ukoliko sistem ne može da zapamti podatke o novom kursu on prikazuje zaposlenomporuku “Sistem ne može da zapamti novi kurs”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
11/86
11
1.2.6
SK 6 : Slučaj korišćenja – Pretraga kurseva
Naziv SK
Pretraga kurseva
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa kursevima. Učitana je lista jezika. Učitana je lista zaposlenih.
Osnovni scenario SK
1.
Zaposleni unosi vrednosti po kojima pretražuje kurseve. (APUSO)
2. Zaposleni poziva sistem da nađe kurseve po zadatim vrednostima. (APSO)
3. Sistem traži kurseve po zadatim vrednostima. (SO)
4. Sistem prikazuje zaposlenom nađene kurseve. (IA)
5. Zaposleni bira kurs čije podatke želi da vidi. (APUSO)
6. Zaposleni poziva sistem da prikaže podatke o izabranom kursu. (APSO)
7. Sistem traži podatke o izabranom kursu. (SO)
8. Sistem prikazuje zaposlenom podatke o izabranom kursu. (IA)
Alternativna scenarija
4.1. Ukoliko sistem ne može da nađe kurseve on prikazuje zaposlenom poruku: “Sistem ne
može da nađe kurseve po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
8.1. Ukoliko sistem ne može da nađe izabrani kurs on prikazuje zaposlenom poruku:
“Sistem ne može da nađe podatke o izabranom kursu”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
12/86
12
1.2.7
SK 7 : Slučaj korišćenja – Unos računa (Složen)
Naziv SK
Unos računa
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa računima. Učitane je lista kurseva. Učitana je lista polaznika.
Osnovni scenario SK
1.
Zaposleni unosi podatke o novom računu. (APUSO)
2. Zaposleni kontroliše da li je korektno uneo podatke o novom računu. (ANSO)
3. Zaposleni poziva sistem da zapamti podatke o novom računu. (APSO)
4. Sistem pamti podatke o novom računu. (SO)
5. Sistem prikazuje zaposlenom poruku “Racun je uspesno sacuvan”. (IA)
Alternativna scenarija
5.1. Ukoliko sistem ne može da zapamti podatke o novom računu on prikazuje zaposlenom poruku: “Sistem ne može da zapamti novi račun”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
13/86
13
1.2.8
SK 8 : Slučaj korišćenja – Pretraga računa
Naziv SK
Pretraga računa
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa računima. Učitana je lista polaznika.
Osnovni scenario SK
1.
Zaposleni unosi vrednosti po kojima pretražuje račune. (APUSO)
2. Zaposleni poziva sistem da nađe račune po zadatoj vrednosti. (APSO)
3. Sistem traži račune po zadatoj vrednosti. (SO)
4. Sistem prikazuje zaposlenom nađene račune. (IA)
5. Zaposleni bira račun čije podatke želi da vidi. (APUSO)
6. Zaposleni poziva sistem da prikaže podatke o izabranom računu. (APSO)
7. Sistem traži podatke o izabranom računu. (SO)
8. Sistem prikazuje zaposlenom podatke o izabranom računu. (IA)
Alternativna scenarija
4.1. Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: “Sistem ne
može da nađe račune po zadatoj vrednosti”. Prekida se izvršenje scenarija. (IA)
8.1. Ukoliko sistem ne može da nađe podatke o izabranom računu on prikazuje zaposlenom
poruku: “Sistem ne može da nađe podatke o izabranom računu”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
14/86
14
1.2.9
SK 9 : Slučaj korišćenja – Brisanje računa
Nаziv SK
Brisanje rаčunа
Aktori SK
Zaposleni
Učesnici SK
Zaposeni i sistem ( progrаm)
Preduslov: Sistem je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa računima. Učitana je lista polaznika. Učitana je lista računa.
Osnovni scenаrio SK
1. Zaposleni unosi vrednost po kojoj pretrаžuje rаčun. (APUSO)
2. Zaposleni pozivа sistem dа nаđe rаčune po zаdаtoj vrednosti. (APSO)
3. Sistem trаži rаčune po zаdаtoj vrednosti. (SO)
4. Sistem prikаzuje zaposlenom pronаđene račune. (IA)
5. Zaposleni birа rаčun koji želi dа obriše.(APUSO)
6. Zaposleni pozivа sistem dа obriše odаbrаni rаčun. (APSO)
7. Sistem briše odаbrаni rаčun. (SO)
8. Sistem prikаzuje zaposlenom poruku: “Sistem je obrisao rаčun”. (IA)
Alternаtivnа scenаrijа
4.1 Ukoliko sistem ne može dа nаđe rаčune on prikаzuje zaposlenom poruku: “Sistem ne može
dа nаđe rаčune po zаdаtoj vrednosti”. Prekidа se izvršenje scenаriа. (IA)
8.1 Ukoliko sistem ne može dа obriše rаčun on prikаzuje zaposlenom poruku: “Sistem ne može
dа obriše rаčun”.
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
15/86
15
1.2.10 SK10: Slučaj korišćenja - Izmena računa
Naziv SK
Izmena računa
Aktori SK
Zaposleni
Učesnici SK
Zaposeni i sistem ( progrаm)
Preduslov: Sistem je uključen i korisnik je ulogovan pod svojom šifrom. Sistem prikazuje
formu za rad sa računima. Učitana je lista polaznika. Učitana je lista računa.
Osnovni scenario SK
1. Zaposleni unosi vrednosti po kojima pretražuje račune. (APUSO)
2. Zaposleni poziva sistem da nađe račune po zadatim vrednostima. (APSO)
3. Sistem traži račune po zadatim vrednsotima. (SO)
4. Sistem prikаzuje zaposlenom pronađene račune i poruku: ʺ Pretraga je uspešno izvršena ʺ.
(IA)
5. Zaposleni bira račun koji želi da izmeni. (APUSO)
6. Zaposleni poziva sistem da učita podatke o izabranom računu. (APSO)
7.
Sistem traži podatke o izabranom računu. (SO)
8. Sistem prikazuje zaposlenom podatke o izabranom računu i poruku “Podaci o izabranom
računu su uspešno pronađeni”. (IA)
9. Zaposleni unosi(menja) podatke o računu. (APUSO)
10. Zaposleni kontroliše da li je korektno uneo podatke o računu. (ANSO)
11. Zaposleni poziva sistem da zapamti podatke o računu. (APSO)
12. Sistem pamti podatke o računu. (SO)
13. Sistem prikazuje zaposlenom poruku “Sistem je zapamtio račun”. (IA)
Alternativna scenarija
4.1. Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: “Sistemne možeda nađe račune po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
8.1. Ukoliko sistem ne može da nađe račun on prikazuje zaposlenom poruku: “Sistem ne može
da nađe izabrani račun”. Prekida se izvršenje scenarija. (IA)
13.1. Ukoliko sistem ne može da zapamti podatke o računu on prikazujezaposlenom poruku:
“Sistem ne može da zapamti račun”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
16/86
16
1.2.10
SK 11 : Slučaj korišćenja – Prijavljivanje zaposlenog
Naziv SK
Prijavljivanje zaposlenog
Aktori SKZaposleni
Učesnici SK
Zaposleni i sistem (program)
Preduslov: Sistem je uključen i prikazuje formu za prijavljivanje zaposlenog.
Osnovni scenario SK
1. Zaposleni unosi podatke za autentifikaciju zaposlenog. (APUSO)
2.
Zaposleni poziva sistem da pronađe zaposlenog sa zadatim podacima. (APSO)
3. Sistem pretražuje zaposlene. (SO)
4. Sistem prikazuje poruku “zaposleni + uspešno ste prijavljeni” i početnu formu. (IA)
Alternativna scenarija
4.1. Ukoliko sistem ne može da nađe zaposlenog prikazuje poruku “Sistem ne može da nađe
zaposlenog ”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
17/86
17
2. Analiza
2.1 . Ponašanje softverskog sistema – Sistemski dijagrami sekvenci
DS1: Dijagram sekvenci slučaja korišćenja - Unos polaznika škole
1. Zaposleni poziva sistem da zapamti podatke o novom polazniku. (APSO)
2. Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio polaznika”. (IA)
Aktor: Zaposleni
Sistem
ZapamtiPolaznika(Polaznik)
“Sistem je zapamtio polaznika”
Alternаtivnа scenаrijа
2.1. Ukoliko sistem ne može da zapamti podatke o novom polazniku on prikazuje
zaposlenom poruku “Sistem ne može da zapamti novog polaznika”. (IA)
Aktor: Zaposleni
Sistem
ZapamtiPolaznika(Polaznik)
“Sistem ne moze da zapamti
novog polaznika”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1.
Signal ZapamtiPolaznika(Polaznik )
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
18/86
18
DS2 : Dijagram sekvenci slučaja korišćenja – Izmena polaznika škole
1. Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)
2. Sistem prikazuje zaposlenom nađene polaznike. (IA)
3. Zaposleni poziva sistem da učita podatke o izabranom polazniku. (APSO)
4. Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)
5. Zaposleni poziva sistem da zapamti podatke o polazniku. (APSO)
6. Sistem prikazuje zaposlenom poruku: “Sistem je izmenio podatke o polazniku.” (IA)
Aktor: Zaposleni
Sistem
IzabraniPolaznik
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
UcitajPolaznika(Polaznik)
IzmeniPolaznika(Polaznik)
“Sistem je izmenio polaznika”
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
19/86
19
Alternativna scenarija:
2.1. Ukoliko sistem ne može da nađe polaznike, on prikazuje zaposlenom poruku: “Sistem
ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
PretraziPolaznike(KriterijumPretrage, List)
“Sistem ne može da nađe polaznike pozadatim vrednostima”
4.1.Ukoliko sistem ne može da nađe podatke o izabranom polazniku, on prikazuje
zaposlenom poruku: “Sistem ne može da nađe podatke o izabranom polazniku”. Prekida se
izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
“Sistem ne može da nađe podatke oizabranom polazniku”
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
UcitajPolaznika(Polaznik)
6.1.Ukoliko sistem ne može da zapamti podatke o polazniku on prikazuje zaposlenom
poruku: “Sistem ne može da zapamti podatke o polazniku”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
20/86
20
IzmeniPolaznika(Polaznik)
“Sistem ne može da zapamtipodatke o polazniku”
Aktor: Zaposleni
Sistem
“Sistem ne može da nađe podatke oizabranom polazniku”
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
UcitajPolaznika(Polaznik)
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal PretraziPolaznike(KriterijumPretrage, List)
2. signal UcitajPolaznika(Polaznik )
3.
signal IzmeniPolaznika(Polaznik )
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
21/86
21
DS3 : Dijagram sekvenci slučaja korišćenja – Pretraga polaznika škole
1. Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)
2. Sistem prikazuje zaposlenom nađene polaznike. (IA)
3. Zaposleni poziva sistem da prikaže podatke o izabranom polazniku. (APSO)
4.
Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)
Aktor: Zaposleni
Sistem
IzabraniPolaznik
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
UcitajPolaznika(Polaznik)
Alternativna scenarija
2.1. Ukoliko sistem ne može da nađe polaznike on prikazuje zaposlenom poruku: “Sistem
ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
PretraziPolaznike(KriterijumPretrage, List)
“Sistem ne može da nađe polaznike pozadatim vrednostima”
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
22/86
22
4.1. Ukoliko sistem ne može da nađe podatke o izabranom polazniku, on prikazuje
zaposlenom poruku: “Sistem ne može da nađe podatke o izabranom polazniku”. (IA)
Aktor: Zaposleni
Sistem
“Sistem ne može da nađe podatke o
izabranom polazniku”
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
UcitajPolaznika(Polaznik)
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal PretraziPolaznike(KriterijumPretrage, List)
2. signal UcitajPolaznika(Polaznik )
DS4 : Dijagram sekvenci slučaja korišćenja – Brisanje polaznika škole
1. Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)
2. Sistem prikazuje zaposlenom nađene polaznike. (IA)
3. Zaposleni poziva sistem da obriše polaznika. (APSO)
4. Sistem prikazuje zaposlenom poruku: “Sistem je obrisao polaznika.” (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
23/86
23
Aktor: Zaposleni
Sistem
“Sistem je obrisao polaznika”
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
ObrisiPolaznika(Polaznik)
Alternativna scenarija
2.1. Ukoliko sistem ne može da nađe polaznike on prikazuje zaposlenom poruku: “Sistem
ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
PretraziPolaznike(KriterijumPretrage, List)
“Sistem ne može da nađe polaznike pozadatim vrednostima”
4.1. Ukoliko sistem ne može da obriše polaznika on prikazuje zaposlenom poruku:
“Sistem ne može da obriše polaznika”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
24/86
24
Aktor: Zaposleni
Sistem
“Sistem ne moze da obrise polaznika”
PretraziPolaznike(KriterijumPretrage, List)
NadjeniPolaznici
ObrisiPolaznika(Polaznik)
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal PretraziPolaznike(KriterijumPretrage, List)
2. signal ObrisiPolaznika(Polaznik ).
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
25/86
25
DS5 : Dijagram sekvenci slučaja korišćenja – Unos novog kursa
1. Zaposleni poziva sistem da zapamti podatke o novom kursu. (APSO)
2. Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio kurs”. (IA)
Aktor: Zaposleni
Sistem
UcitajJezike(List)
listaJezika
UcitajZaposlene(List)
listaZaposlenih
ZapamtiKurs(Kurs)
“Sistem je zapamtio kurs”
Alternаtivnа scenаrijа
2.1. Ukoliko sistem ne može da zapamti podatke o novom kursu on prikazuje zaposlenom
poruku “Sistem ne može da zapamti novi kurs”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
26/86
26
Aktor: Zaposleni
Sistem
UcitajJezike(List)listaJezika
UcitajZaposlene(List)
listaZaposlenih
ZapamtiKurs(Kurs)
“Sistem ne moze da zapamti novi kurs”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal UcitajJezike(List)
2. signal UcitajZaposlene(List)
3. signal ZapamtiKurs(Kurs).
DS6 : Dijagram sekvenci slučaja korišćenja – Pretraga kurseva
1. Zaposleni poziva sistem da nađe kurseve po zadatim vrednostima. (APSO)
2. Sistem prikazuje zaposlenom nađene kurseve. (IA)
3. Zaposleni poziva sistem da prikaže podatke o izabranom kursu. (APSO)
4. Sistem prikazuje zaposlenom podatke o izabranom kursu. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
27/86
27
Aktor: Zaposleni
Sistem
UcitajJezike(List)listaJezika
UcitajZaposlene(List)
listaZaposlenih
PretraziKurseve(KriterijumPretrage,List)
listaKurseva
UcitajKurs(Kurs)
izabraniKurs
Alternativna scenarija
2.1. Ukoliko sistem ne može da nađe kurseve on prikazuje zaposlenom poruku: “Sistem ne
može da nađe kurseve po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
UcitajJezike(List)
listaJezika
UcitajZaposlene(List)
listaZaposlenih
PretraziKurseve(KriterijumPretrage,List)
“Sistem ne moze da nadje kurseve po zadatim
vrednostima”
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
28/86
28
4.1. Ukoliko sistem ne može da nađe izabrani kurs on prikazuje zaposlenom poruku:
“Sistem ne može da nađe podatke o izabranom kursu”. (IA)
UcitajKurs(Kurs)
Aktor: Zaposleni
Sistem
UcitajJezike(List)
listaJezika
UcitajZaposlene(List)
listaZaposlenih
PretraziKurseve(KriterijumPretrage,List)
izabraniKurs
“Sistem ne moze da nadje podatke oizabranom kursu”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal PretraziKurseve(KriterijumPretrage,List)
2. signal UcitajKurs(Kurs)
3. signal UcitajJezike(List) .
4. signal UcitajZaposlene(List) .
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
29/86
29
DS7 : Dijagram sekvenci slučaja korišćenja – Unos računa
1. Zaposleni poziva sistem da zapamti podatke o novom računu. (APSO)
2. Sistem prikazuje zaposlenom poruku “Uspešno ste uneli račun”. (IA)
Aktor: Zaposleni
Sistem
UcitajKurseve(List)
listaKurseva
UcitajPolaznike(List)
listaPolaznika
ZapamtiRacun(Racun)
“Uspesno ste uneli racun”
Alternativna scenarija
2.1. Ukoliko sistem ne može da zapamti novi račun on prikazuje zaposlenom poruku:
“Sistem ne može da kreira novi račun”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
30/86
30
Aktor: Zaposleni
Sistem
UcitajKurseve(List)listaKurseva
UcitajPolaznike(List)
listaPolaznika
ZapamtiRacun(Racun)
“Sistem ne moze da kreira novi racun”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal UcitajKurseve(List)
2. signal UcitajPolaznike(List)
3.
signal ZapamtiRacun(Racun) .
DS8 : Dijagram sekvenci slučaja korišćenja – Pretraga računa
1. Zaposleni poziva sistem da nađe račune po zadatoj vrednosti. (APSO)
2. Sistem prikazuje zaposlenom nađene račune. (IA)
3. Zaposleni poziva sistem da prikaže podatke o izabranom računu. (APSO)
4. Sistem prikazuje zaposlenom podatke o izabranom računu. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
31/86
31
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
listaRacuna
UcitajPolaznike(List)listaPolaznika
ucitajRacun(Racun)
izabraniRacun
Alternativna scenarija
2.1. Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: “Sistem ne
može da nađe račune po zadatoj vrednosti”. Prekida se izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
“Sistem ne moze da nadje racune po zadatoj
vrednosti”
UcitajPolaznike(List)
listaPolaznika
4.1. Ukoliko sistem ne može da nađe podatke o izabranom računu on prikazuje zaposlenom
poruku: “Sistem ne može da nađe podatke o izabranom računu ”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
32/86
32
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
listaRacuna
UcitajPolaznike(List)listaPolaznika
ucitajRacun(Racun)
“Sistem ne moze da nadje podatke oizabranom racunu”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal UcitajPolaznike(List)
2. signal PretraziRacune(KriterijumPretrage, List)
3. signal UcitajRacun(Racun) .
DS9 : Dijagram sekvenci slučaja korišćenja – Brisanje računa
1. Zaposleni pozivа sistem dа nаđe rаčune po zаdаtoj vrednosti. (APSO)
2. Sistem prikаzuje zaposlenom pronаđene račune. (IA)
3. Zaposleni pozivа sistem dа obriše odаbrаni rаčun. (APSO)
4. Sistem prikаzuje zaposlenom poruku: “Sistem je obrisao rаčun”. (IA)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
33/86
33
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
listaRacuna
UcitajPolaznike(List)listaPolaznika
obrisiRacun(Racun)
“Sistem je obrisao racun”
Alternаtivnа scenаrijа
2.1. Ukoliko sistem ne može dа nаđe rаčune on prikаzuje zaposlenom poruku: “Sistem ne
može dа nаđe rаčune po zаdаtoj vrednosti”. Prekidа se izvršenje scenаriа. (IA)
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
“Sistem ne moze da nadje racune po zadatojvrednosti”
UcitajPolaznike(List)
listaPolaznika
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
34/86
34
4.1. Ukoliko sistem ne može dа obriše rаčun on prikаzuje zaposlenom poruku: “Sistem ne
može dа obriše rаčun”.
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
listaRacuna
UcitajPolaznike(List)
listaPolaznika
ObrisiRacun(Racun)
“Sistem ne moze da obrise racun”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal UcitajPolaznike(List)
2. signal PretraziRacune(KriterijumPretrage, List)
3. signal ObrisiRacun(Racun).
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
35/86
35
DS10 : Dijagram sekvenci slučaja korišćenja – Izmena računa
1. Zaposleni poziva sistem da nađe račune po zadatim vrednostima. (APSO)
2.
Sistem prikаzu je zaposlenom pronаđene račune. (IA)
3. Zaposleni poziva sistem da prikaže podatke o izabranom računu. (APSO)
4.
Sistem prikazuje zaposlenom podatke o izabranom računu i poruku “Podaci o izabranom
računu su uspešno pronađeni”. (IA)
5. Zaposleni poziva sistem da zapamti podatke o računu. (APSO)
6.
Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio račun.” IA)
Aktor: Zaposleni
Sistem
listaPolaznika
PretraziRacune(KriterijumPretrage,
List)
listaRacuna
izabraniRacun, “Podaci o izabranom računusu pronađeni”
zapamtiRacun(Racun)
“Sistem je zapamtio račun”
UcitajPolaznike(List)
ucitajRacun(Racun)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
36/86
36
Alternativna scenarija
2.1 Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: „Sistem ne može
da nađe račune po zadatoj vrednostima“. Prekida se izvršenje scenarija. (IA)
Aktor: Zaposleni
Sistem
PretraziRacune(KriterijumPretrage, List)
“Sistem ne moze da nadje racune po zadatojvrednosti”
UcitajPolaznike(List)
listaPolaznika
4.1 Ukoliko sistem ne može da nađe račun on prikazuje zaposlenom poruku: „Sistem ne može
da nađe podatke o izabranom računu“. Prekida se izvšenje scenarija. (IA)
Aktor: Zaposleni
Sistem
listaRacuna
UcitajPolaznike(List< Polaznik>)
listaPolaznika
ucitajRacun(Racun)
PretraziRacune(KriterijumPretrage,
List)
“Sistem ne može da nađe podatke oizabranom računu”
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
37/86
37
6.1 Ukoliko sistem ne može da zapamti podatke o računu on prikazuje zaposlenom poruku:
„Sistem ne može da zapamti račun“. (IA)
Aktor: Zaposleni
Sistem
listaPolaznika
PretraziRacune(KriterijumPretrage,
List)listaRacuna
izabraniRacun, “Podaci o izabranom računu
su pronađeni”
zapamtiRacun(Racun)
“Sistem ne može da zapamti račun”
UcitajPolaznike(List)
ucitajRacun(Racun)
Sa navedenih sekvencnih dijagrama uočavaju se 4 sistemske operacije:
1. signal UcitajPolaznike(List)
2. signal PretraziRacune(KriterijumPretrage, List)
3.
signal ucitajRacun(Racun)
4. signal zapamtiRacun(Racun).
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
38/86
38
DS11 : Dijagram sekvenci slučaja korišćenja – Prijavljivanje zaposlenog
1. Zaposleni poziva sistem da pronađe zaposlenog sa zadatim podacima. (APSO)
2. Sistem prikazuje poruku “zaposleni + uspešno ste prijavljeni” i početnu formu. (IA)
Sistem
Aktor: Zaposleni
NadjiZaposlenog(username,password)
Zaposleni + “uspeno steprijavljeni”
Alternativna scenarija
2.1. Ukoliko sistem ne može da nađe zaposlenog prikazuje poruku “Sistem ne može
da nađe zaposlenog ”. (IA)
Sistem
Aktor: Zaposleni
NadjiZaposlenog(username,password)
“Sistem ne moze da nadjezaposlenog”
Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba
projektovati:
1. signal NadjiZaposlenog(username,password).
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
39/86
39
Kao rezultat analize scenarija dobijeno je ukupno 17 sistemskih operacija koje treba projektovati:
1.
Signal ZapamtiPolaznika(Polaznik )
2.
Signal PretraziPolaznike(KriterijumPretrage, List)
3.
Signal UcitajPolaznika(Polaznik)
4.
Signal ObrisiPolaznika(Polaznik) 5.
Signal UcitajJezike(List)
6.
Signal UcitajZaposlene(List)
7.
Signal ZapamtiKurs(Kurs)
8.
Signal UcitajKurs(Kurs)
9.
Signal PretraziKurseve(KriterijumPretrage, List)
10.
Signal UcitajKurseve(List)
11.
Signal UcitajPolaznike(List)
12.
Signal UnosNovogRacuna(Racun)
13.
Signal ZapamtiRacun(Racun)
14.
Signal PretraziRacune(KriterijumPretrage, List)15.
Signal UcitajRacun(Racun)
16.
Signal ObrisiRacun(Racun)
17.
Signal NadjiZaposlenog(username,password)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
40/86
40
2.2. Ponašanje softtverskog sistema – Definisanje ugovora o sistemskim
operacijama
2.2.1.
Ugovor UG1: ZapamtiPolaznika
Operacija: ZapamtiPolaznika(Polaznik ): signal;
Veza sa SK: SK1
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena.
Postuslovi: Zapamćeni su podaci o polazniku
2.2.2. Ugovor UG2: PretraziPolaznike
Operacija: PretraziPolaznike(KriterijumPretrage,List): signal;
Veza sa SK: SK2,SK3,SK4
Preduslovi: -
Postuslovi: -
2.2.3. Ugovor UG3: UcitajPolaznika
Operacija: UcitajPolaznika(Polaznik ): signal;
Veza sa SK: SK2,SK3
Preduslovi: -
Postuslovi: -
2.2.4.
Ugovor UG4: ObrisiPolaznika
Operacija: ObrisiPolaznika(Polaznik): signal;
Veza sa SK: SK4
Preduslovi: Strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena.
Postuslovi: Polaznik je obrisan iz sistema.
2.2.5. Ugovor UG5: UcitajJezike
Operacija: UcitajJezike(List): signal;
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
41/86
41
Veza sa SK: SK5,SK6
Preduslovi: -
Postuslovi: -
2.2.6. Ugovor UG6: UcitajZaposlene
Operacija: UcitajZaposlene(List): signal;
Veza sa SK: SK5,SK6
Preduslovi: -
Postuslovi: -
2.2.7.
Ugovor UG7: ZapamtiKurs
Operacija: ZapamtiKurs(Kurs): signal;
Veza sa SK: SK5
Preduslovi: Vrednosna i strukturna ograničenja nad objektom K urs moraju biti zadovoljena.
Postuslovi: Podaci o kursu su zapamćeni.
2.2.8.
Ugovor UG8: UcitajKurs
Operacija: UcitajKurs(Kurs): signal;
Veza sa SK: SK6
Preduslovi: -
Postuslovi: -
2.2.9.
Ugovor UG9: PretraziKurseve
Operacija: PretraziKurseve(KriterijumPretrage,List): signal;
Veza sa SK: SK6
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
42/86
42
2.2.10.
Ugovor UG10: UcitajKurseve
Operacija: UcitajKurseve(List): signal;
Veza sa SK: SK7
Preduslovi: -
Postuslovi: -
2.2.11. Ugovor UG11: UcitajPolaznike
Operacija: UcitajPolaznike(List): signal;
Veza sa SK: SK7,SK8,SK9,SK10
Preduslovi: -
Postuslovi: -
2.2.12.
Ugovor UG12: UnosNovogRacuna
Operacija: UnosNovogRacuna(Racun): signal;
Veza sa SK: SK7
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.
Postuslovi:
Kreiran je novi racun.
2.2.13.
Ugovor UG13: ZapamtiRacun
Operacija: ZapamtiRacun(Racun): signal;
Veza sa SK: SK7,SK10
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.
Postuslovi: Podaci o racunu su zapamćeni.
Izračunata je ukupna vrednost računa.
2.2.14. Ugovor UG14: PretraziRacune
Operacija: PretraziRacune(KriterijumPretrage, List): signal;
Veza sa SK: SK8, SK9, SK10
Preduslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
43/86
43
Postuslovi: -
2.2.15.
Ugovor UG15: UcitajRacun
Operacija: UcitajRacun(Racun): signal;
Veza sa SK: SK8, SK10
Preduslovi: -
Postuslovi: -
2.2.16. Ugovor UG16: ObrisiRacun
Operacija: ObrisiRacun(Racun): signal;
Veza sa SK: SK9
Preduslovi: Strukturno ograničenje nad objektom Racun mora biti zadovoljeno.
Postuslov: Račun je obrisan iz sistema.
2.2.17.
Ugovor UG17: NadjiZaposlenog
Operacija: NadjiZaposlenog(username,password ): signal;
Veza sa SK: SK11
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
44/86
44
2.3.
Struktura softverskog sistema – Konceptualni (domenski) model
ZaposleniRacun
StavkaRacuna
KursJezik
- obradjuje - je_ obradjen
1 *
- sadrzi1
-je_ sadrzana*
-se_nalazi 1
-
ima *
- na_ime
1
*
-drzi1
- odrzavan_od_ strane *
-u_okviru
1
-iz
*
- BrojRacuna: Integer
- Ukup naVrednost:Double
- ZaposleniID: Integer
- Ime: String
- Prezime: String
- username: String
- password: String
- JezikID: Integer
- Naziv: String
- KursID: Integer
- Naziv: String
- Trajanje: String
- Cena: Double
- RB: Integer
- Datum: Date
- se_ nalazi
Polaznik
- PolaznikID: Integer
- Ime: String
- Prezime: String
- JMBG: String
- Kontakt: String
- DatumUpisa: Date
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
45/86
45
Kao rezultat analize scenarija SK i pravljenja konceptualnog modela dobija se logička struktura i
ponašanje softverskog sistema:
SOFTVERSKI SISTEM
STRUKTURA SISTEMA
PONAŠANJE SISTEMA
Zaposleni
Racun
StavkaRacuna
KursJezik
- obradjuje - je_ obradjen
1 *
-sadrzi1
-je_ sadrzana*
-se_nalazi 1
-
ima *
- na_ime
1
*
-drzi1
- odrzavan_od_strane *
-u_ okviru
1
-iz
*
- BrojRacuna: Integer
- UkupnaVrednost:Double
- ZaposleniID: Integer
- Ime: String
- Prezime: String
- username: String
- password: String
- JezikID: Integer
- Naziv: String
- KursID: Integer
- Naziv: String
- Trajanje: String
- Cena: Double
- RB: Integer
- Datum: Date
- se_nalazi
Polaznik
- PolaznikID: Integer
- Ime: String
- Prezime: String
- JMBG: String
- Kontakt: String
- DatumUpisa: Date
SISTEMSKE OPERACIJE(SO)
+ ZapamtiPolaznika(polaznik: Polaznik): signal
+ PretraziPolaznike(KriterijumPretrage Object, List): signal
+ Uci tajPolaznika(polaznik: Polaznik): s ignal
+ IzmeniPolaznika(polaznik: Polaznik): signal
+ ObrisiPolaznika(polaznik: Polaznik): signal+ UcitajJezike(List): signal
+ UcitajZaposlene(List): signal
+ ZapamtiKurs(kurs: Kurs): signal
+ UcitajKurs(kurs: Kurs): s ignal
+ PretraziKurseve(KriterijumPretrage Object, List): s ignal
+ UcitajKurseve(List): signal
+ ZapamtiRacun(racun: Racun): signal
+ PretraziRacune(KriterijumPretrage Object, List): s ignal
+ UcitajRacun(racun: Racun): signal
+ ObrisiRacun(racun: Racun): signal
+ NadjiZaposlenog(kriterijumPretrage String): signal
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
46/86
46
2.4. Struktura softverskog sistema – Relacioni model
Na osnovu konceptualnog modela koji je predstavljen dijagramom klasa dobijen je sledeći
relacioni model:
Zaposleni(ZaposleniID, Ime, Prezime, username, password);
Racun(BrojRacuna, UkupnaVrednost, ZaposleniID, PolaznikID);
StavkaRacuna(BrojRacuna, RB, Datum, KursID);
Kurs(JezikID, KursID, Naziv, Trajanje, Cena, ZaposleniID);
Jezik(JezikID, Naziv);
Polaznik(PolaznikID, Ime, Prezime, JMBG, Kontakt, DatumUpisa);
Tabela Zaposleni Prosto vrednosno
ograničenje
Složeno vrednosno
ograničenje
Strukturno
ograničenje
Atributi
Ime Tip
atributa
Vrednost
atributa
Međuzav.
atributa
jedne
tabele
Međuzav.
atributa
više
tabela
INSERT /
UPDATE
CASCADES
Racun, Kurs
DELETE
RESTRICTED
Racun, Kurs
ZaposleniID Integer not null
Ime String not null
Prezime String not null
username String not null
password String not null
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
47/86
47
Tabela Racun Prosto vrednosno
ograničenje
Složeno vrednosno
ograničenje
Strukturno
ograničenje
Atributi
Ime Tip
atributa
Vrednost
atributa
Međuzav
. atributa
jedne
tabele
Međuza
v.
atributa
više
tabela
INSERT
RESTRICTED
Zaposleni,
Polaznik
UPDATE
RESTRICTED
Zaposleni,
Polaznik
CASCADES
StavkaRacuna
DELETE
RESTRICTED
StavkaRacuna
BrojRacuna Integer not null
UkupnaVrednost Double (default:0)
ZaposleniID Integer not null
PolaznikID Integer not null
Tabela StavkaRacuna Prosto vrednosno
ograničenje
Složeno vrednosno
ograničenje
Strukturno
ograničenje
Atributi
Ime Tip
atributa
Vrednost
atributa
Međuzav.
atributa
jedne tabele
Međuz
av.
atribut
a više
tabela
INSERT
RESTRICTED
Racun, Kurs,
UPDATERESTRICTED
Racun, Kurs,
DELETE /
BrojRacuna Integer not null
RB Integer not null
and >0
Datum Date
KursID Integer not null
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
48/86
48
Tabela Kurs Prosto vrednosno
ograničenje
Složeno vrednosno
ograničenje
Strukturno
ograničenje
Atributi
Ime Tip
atributa
Vrednost
atributa
Međuzav.
atributa
jedne tabele
Međuzav.
atributa više
tabela
INSERT
RESTRICTED
Jezik, Zaposleni
UPDATE
CASCADES
StavkaRacuna RESTRICTED
Zaposleni, Jezik
DELETE
RESTRICTED
StavkaRacuna
KursID Integer not null
JezikID Integer not null
Naziv String not null
Trajanje String not null
Cena Double >0
ZaposleniID Integer not null
Tabela Jezik Prosto vrednosno
ograničenje
Složeno vrednosno
ograničenje
Strukturno
ograničenje
Atributi
Ime Tip
atributa
Vrednost
atributa
Međuzav.
atributa
jedne
tabele
Međuzav.
atributa
više
tabela
INSERT /
UPDATE
CASCADES Kurs
DELETE
RESTRICTED
Kurs
JezikID Integer not null
Naziv String not null
Tabela Polaznik Prosto vrednosno
ograničenje
Složeno vrednosno
ograničenje
Strukturno
ograničenje
Atributi
Ime Tip
atributa
Vrednost
atributa
Međuzav.
atributa
jedne
tabele
Međuzav.
atributa
više
tabela
INSERT/
UPDATE
CASCADES
Racun
DELETE
RESTRICTED
Racun
PolaznikID Integer not nullIme String not null
Prezime String not null
JMBG String not null
Kontakt String not null
DatumUpisa Date
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
49/86
49
3. Projektovanje
Faza projektovanja opisuje fizičku strukturu i ponašanje softverskog sistema (arh itekturu
softverskog sistema).
3.1 Arhitektura softverskog sistema
Arhitektura sistema je tronivojska i sastoji se od sledećih nivoa:
korisnički interfejs
aplikaciona logika
skladište podataka
Nivo korisničkog interfejsa je na strani klijenta, dok su aplikaciona logika i skladište podataka na
strani servera.
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
50/86
50
3.2.
Projektovanje aplikacione logike
Neophodno je da aplikacioni serveri obezbede servise pomoću kojih će aplikaciona logika
softverskog sistema biti realizovana. Projektovani aplikacioni server sadrži:
deo za komunikaciju sa klijentom kontroler aplikacione logike
deo za komunikaciju sa skladištem podataka (broker baze podataka)
deo koji sadrži poslovnu logiku .
3.2.1 Komunikacija sa klijentima
Direktna komunikacija sa klijentima obavlja se preko .xhtml stranica na kojima se nalaze
odgovarajuće forme za pristup sistemu. Ulogu kontrolera korisničkog interfejsa imaju Managed
Bean-ovi koji komuniciraju sa .xhtml stranicama, odnosno prihvataju zahteve i prosleđuju ih dosistemskih operacija, a zatim nakon izvršenja sistemskih operacija prihvataju odgovor i prikazuju
ga na .xhtml stranicama.
U ovom radu korišćeno je jedanaest Managed Bean-ova, koji se koriste na odgovarajućim
stranicama:
MbObradaZaposlenog
MbFilterKurseva
MbFilterPolaznika
MbFilterRacuna
MbObradaJezika
MbObradaKursa
MbObradaPolaznika
MbObradaRacuna
MbPretragaKurseva
MbPretragaPolaznika
MbUnosRacuna
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
51/86
51
3.2.2
Kontroler aplikacione logike
Kontroler aplikacione logike prihvata zahteve za izvršenje sistemskih operacija i iste prosleđuje
do konkretne sistemske operacije. Nakon izvršenja sistemske operacije, kontroler prihvata
odgovor i vraća nazad klijentu.
Za izvršenje sistemskih operacija zaduženi su Session Bean-ovi , bez posredovanja kontrolera
aplikacione logike. Menaged Bean-ovi komuniciraju direktno sa Session Bean-ovima, pri čemu
šalju zahteve i prihvataju odgovore. Na slici je simbolično prikazan Kontroler i on ne postoji u
arhitekturi kao takav, već Session Bean-ovi izvršavaju njegove funkcije.
Kako je u fazama prikupljanja zahteva i analize data specifikacija strukture i ponašanja
softverskog sistema, odnosno specifikacija poslovne logike softverskog sistema, sledeća slika
daje opis sistema nakon faze projektovanja komunikacije sa klijentima.
SOFTVERSKI SISTEM
STRUKTURA SISTEMA
PONAŠANJESISTEMA
ZaposleniRacun
StavkaRacuna
KursJezik
-obradjuje -je_ obradjen
1 *
-sadrzi1
-je_ sadrzana*
-s e_ nalazi 1
-
i ma *
-na_ime
1
*
-drzi1
- odrzavan_od_strane *
-u_okviru
1
-iz
*
-BrojRacuna:Integer
-UkupnaVrednost:Double
-ZaposleniID: Integer
-Ime:String
-Prezime:String
-username: String
-password:String
- JezikID:Integer
- Naziv:St ring
-KursID:Integer
-Naziv :String
-Trajanje:String
-Cena:Double
- RB:Integer
- Datum:Date
-se_nalazi
Polaznik
- PolaznikID:Integer
- Ime:String
- Prezime:String
- JMBG:String
- Kontakt:String
- DatumUpisa:Date
SISTEMSKE OPERACIJE(SO)
+ZapamtiPolaznika(polaznik:Polaznik): signal
+ PretraziPolaznike(KriterijumPretrageObject, List):signal
+ UcitajPolaznika(polaznik:Polaznik):signal
+ IzmeniPolaznika(polaznik:Polaznik): signal
+ObrisiPolaznika(polaznik:Polaznik): signal
+ UcitajJezike(List):signal
+ UcitajZaposlene(List):signal
+ZapamtiKurs(kurs: Kurs):signal
+ UcitajKurs(kurs:Kurs): signal
+ PretraziKurseve(KriterijumPretrageObject,List): signal
+UcitajKurseve(List): signal
+ ZapamtiRacun(racun:Racun): signal
+ PretraziRacune(KriterijumPretrageObject,List): signal
+ UcitajRacun(racun:Racun): signal
+ObrisiRacun(racun:R acun):signal
+ NadjiZaposlenog(kriterijumPretrageString): signal
Kontroler DB broker
Aplikaciona logika
Softverski sistem
SKLADIŠTE PODATAKA
Korisnički interfejs
.xhtml stranice
Managed Bean
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
52/86
52
3.3.
Projektovanje ponašanja softverskog sistema – sistemske operacije
Za svaku sistemsku operaciju treba napraviti konceptualna rešenja koja su direktno povezana sa
logikom problema. Za svaki od ugovora projektuje se konceptualno rešenje.
Ugovor UG1: ZapamtiPolaznika
Operacija: ZapamtiPolaznika(Polaznik ): signal;
Veza sa SK: SK1
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena.
Postuslovi: Zapamćeni su podaci o polazniku
sbp:SBPolaznikmbop: MBObradaPolaznika
sacuvaj(polaznik)
sgnal, polaznik
em: EntityManager
find(Polaznik.class, polaznikid)
signal,polaznik
merge(Polaznik)
signal, polaznik,
Ugovor UG2: PretraziPolaznike
Operacija: PretraziPolaznike(KriterijumPretrage,List): signal;
Veza sa SK: SK2,SK3,SK4
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
53/86
53
sbp:SBPolaznikmbop: MBFilterPolaznika
nadjiPolaznike(kriterijum)
Signal, listaPolaznika
em: EntityManager
createQuery(upit, Polaznik.class)
signal, typedQuery
listaPolaznika
tq: TypedQuery
setParameter(“argString”, kriterijum)
setParameter(“argInt”, kriterijumInt)
getResultList
Ugovor UG3: UcitajPolaznika
Operacija: UcitajPolaznika(Polaznik ): signal;
Veza sa SK: SK2,SK3
Preduslovi: -
Postuslovi: -
prikaziPolaznika(Polaznik)
signal, Polaznik
find(Polaznik.class, polaznikid)
signal, polaznik
mbop: MBObradaPolaznika sbp:SBPolaznik em: Ent ityManager
Ugovor UG4: ObrisiPolaznika
Operacija: ObrisiPolaznika(Polaznik): signal;
Veza sa SK: SK4
Preduslovi: Strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena.
Postuslovi: Polaznik je obrisan iz sistema.
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
54/86
54
obrisiPolaznika(Polaznik)
signal
merge(polaznik)
signal, polaznik
remove(polaznik)
signal
mbop: MBObradaPolaznika sbp:SBPolaznik em: Ent ityManager
Ugovor UG5: UcitajJezike
Operacija: UcitajJezike(List): signal;
Veza sa SK: SK5,SK6
Preduslovi: -
Postuslovi: -
sbj : SBJezikmboj:MBObradaJezika
vratiSveJezike(List)
signal, listaJezika
em: EntityManager
createNamedQuery“Jezik.findAll“,Jezik.class
signal, listaJezika
Ugovor UG6: UcitajZaposlene
Operacija: UcitajZaposlene(List): signal;
Veza sa SK: SK5,SK6
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
55/86
55
sbz : SBZaposlenimboz : MBObradaZaposlenog
vratiSveZaposlene(List)
signal, listaZaposlenih
em: EntityManager
createNamedQuery “Zaposleni .findAll“,Zaposleni.class
signal, listaZaposlenih
Ugovor UG7: ZapamtiKurs
Operacija: ZapamtiKurs(Kurs): signal;
Veza sa SK: SK5
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Kurs mora ju biti zadovoljena.
Postuslovi: Podaci o kursu su zapamćeni.
sbk: SBKursmbok: MBObradaKursa
sacuvaj(kurs)
sgnal,kurs
em: EntityManager
find(Kurs.class, kursid)
signal,kurs
merge(kurs)
signal, kurs,
Ugovor UG8: UcitajKurs
Operacija: UcitajKurs(Kurs): signal;
Veza sa SK: SK6
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
56/86
56
prikaziKurs(kurs)
signal, kurs
find(Kurs.class, kursid)
signal, kurs
MBObradaKursa sbk: SBKurs em: EntityManager:mbok
Ugovor UG9: PretraziKurseve
Operacija: PretraziKurseve(KriterijumPretrage,List): signal;
Veza sa SK: SK6
Preduslovi: -
Postuslovi: -
sbk: SBKursmbok: MBFilterKurseva
nadjiKurseve(kriterijum)
Signal, listaKurseva
em: EntityManager
createQuery(upit, Kurs.class)
signal, typedQuery
listaKurseva
tq: TypedQuery
setParameter(“argString”, kriterijum)
setParameter(“argInt”, kriterijumInt)
getResultList
Ugovor UG10: UcitajKurseve
Operacija: UcitajKurseve(List): signal;
Veza sa SK: SK7
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
57/86
57
sbk : SBKursmbok: MBObradaKursa
vratiSveKurseve(List)
signal, listaKurseva
em: EntityManager
createNamedQuery“Kurs.findAll“,Kurs.class
signal, l istaKurseva
Ugovor UG11: UcitajPolaznike
Operacija: UcitajPolaznike(List): signal;
Veza sa SK: SK7,SK8,SK9,SK10
Preduslovi: -
Postuslovi: -
sbp : SBPolaznikmbop: MBObradaPolaznika
vratiSvePolaznike(List)
signal, l istaPolaznika
em: EntityManager
createNamedQuery“Polaznik.findAll“,Polaznik.class
signal, l istaPolaznika
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
58/86
58
Ugovor UG12: UnosNovogRacuna
Operacija: UnosNovogRacuna(Racun): signal;
Veza sa SK: SK7
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.
Postuslovi: Kreiran je novi racun.
sbr: SBRacunmbur: MBUnosRacuna
sacuvaj(racun)
em: EntityManager
find(Zaposleni.class,zaposleniid))
signal, zaposleni
find(Polaznik.class,polaznikid)
signal, polaznik
persist(racun)
signal, racunsignal, racun
Ugovor UG13: ZapamtiRacun
Operacija: ZapamtiRacun(Racun): signal;
Veza sa SK: SK7,SK10
Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.
Postuslovi: Podaci o racunu su zapamćeni.
Izračunata je ukupna vrednost računa.
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
59/86
59
sbk: SBRacunmbok: MBUnosRacuna
sacuvaj(Racun)
Signal,Racun
em: EntityManager
find(Racun.class,racunid)
signal,racun
merge(racun)
signal,racun
Ugovor UG14: PretraziRacune
Operacija: PretraziRacune(KriterijumPretrage, List): signal;
Veza sa SK: SK8, SK9, SK10
Preduslovi: -
Postuslovi: -
sbr: SBRacunmbor: MBFilterRacuna
nadjiRacune(kriterijum)
signal, listaRacuna
em: EntityManager
createQuery(upit, Racun.class)
signal, typedQuery
listaRacuna
tq: TypedQuery
setParameter(“argString”, kriterijum)
setParameter(“argInt”, kriterijumInt)
getResultList
Ugovor UG15: UcitajRacun
Operacija: UcitajRacun(Racun): signal;
Veza sa SK: SK8, SK10
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
60/86
60
sbr: SBRacunmbor: MBObradaRacuna
prikaziRacun(Racun)
signal,Racun
em: EntityManager
find(Racun.class,racunid)
signal,racun
Ugovor UG16: ObrisiRacun
Operacija: ObrisiRacun(Racun): signal;
Veza sa SK: SK9
Preduslovi: Strukturno ograničenje nad objektom Racun mora biti zadovoljeno.
Postuslov: Račun je obrisan iz sistema.
sbr: SBRacunmbor: MBObradaRacuna
obrisiRacun ( racun)
signal
em: EntityManager
merge ( racun)
signal, racun
remove( racun )
signal
Ugovor UG17: NadjiZaposlenog
Operacija: NadjiZaposlenog(username,password ): signal;
Veza sa SK: SK11
Preduslovi: -
Postuslovi: -
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
61/86
61
sbz : SBZaposlenimboz: MBObradaZaposlenog
pronadjiZaposlenog(zaposleni)
signal,zaposleni
em: EntityManager
find (Zaposleni.class, zaposleniid )
signal , zaposleni
Sistemske operacije realizovane su u okviru SessionBean klasa koje imaju referencu na
EntityManager (perzistentni okvir) i pozivanjem njegovih metoda izvršavaju se sve operacije
nad bazom podataka. Kao što je na prethodnim slikama prikazano, svaki ManagedBean
komunicira sa jednim ili više SessionBean-ovima, sa svaki SessionBean sa EntityManager -om.
Ponašanje projektovanog sistema prikazano je na sledećoj slici:
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
62/86
62
SBJezik SBJezikLocal
SBPolaznik SBPolaznikLocal
SBKurs SBKursLocal
SBZaposleni SBZaposleniLocal
SBRacunLocal
SBStavkaRacuna SBStavkaRacunaLocal
Pona šanje sistema
+ vratiListuPolaznika(): List
+ vratiPolaznika(Integer polaznikID): Polaznik
+ sacuvajPolaznika(Polaznik polaznik)
+ obrisiPolaznika(Polaznik polaznik)
+ vratiListuPolaznika(): L ist
+ vratiPolaznika(Integer polaznikID): Polaznik
+ sa cuvajPolaznika(Polaznik polaznik)
+ obrisiPolaznika(Polaznik polaznik)
+ vratiListuJezika(): List
+ V ratiJezik(Integer jezikID): Jezik+ vratiListuJezika(): List
+ V ratiJezik(Integer jezikID): Jezik
+ vratiListuKurseva(): List
+ vratiKurs(Integer kursID): Kurs+ sacuvajKurs(Kurs kurs)
+ vratiListuKurseva(): L ist
+ vratiKurs(Integer kursID): Kurs
+ sacuvajKurs(Kurs kurs)
+ vratiListuZaposlenih(): List
+ vratiZaposlenog(Integer zaposleniID): Zaposleni
+ vratiListuZaposlenih(): L ist
+ vratiZaposlenog(Integer zaposleniID): Zaposleni
SBRacun
+ vratiListuRacuna(): List
+ vratiRacun(Integer racunID)
+ sacuvajRacun(Racun racun)
+ obrisiRacun(Racun racun)
+ vratiListuRacuna(): List
+ vratiRacun(Integer racunID)
+ sacuvajRacun(Racun racun)
+ obrisiRacun(Racun racun)
+ vratiListuStavki(): List
+ vratiStavku(Integer stavkaID): StavkaRacuna
+ sacuvajStavku(StavkaRacuna stavka)
+ obrisiStavku(StavkaRacuna stavka)
+ vratiListuStavki(): List
+ vratiStavku(Integer stavkaID): StavkaRacuna
+ sacuvajStavku(StavkaRacuna stavka)
+ obrisiStavku(StavkaRacuna stavka)
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
63/86
63
3.4.
Projektvanje strukture softverskog sistema
Entity klase predstavljaju JPA entitete i generišu se za svaku tabelu iz baze. Svaka klasa mora biti
označena anotacijom @Entity , mora imati privatna polja atributa, get i set metode za sve
attribute kao i javni bezparametarski konstruktor.
@Entity
@Table(name = "jezik")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Jezik.findAll", query = "SELECT j FROM Jezik j"),
@NamedQuery(name = "Jezik.findByJezikID", query = "SELECT j FROM Jezik j WHERE j.jezikID =
:jezikID"),
@NamedQuery(name = "Jezik.findByNaziv", query = "SELECT j FROM Jezik j WHERE j.naziv = :naziv")})
public class Jezik implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "JezikID")
private Integer jezikID;
@Size(max = 30)
@Column(name = "Naziv")
private String naziv;
@OneToMany(mappedBy = "jezikID")
private List kursList;
public Jezik() {
}
public Jezik(Integer jezikID) {
this.jezikID = jezikID;
}
public Integer getJezikID() {
return jezikID;
}
public void setJezikID(Integer jezikID) {
this.jezikID = jezikID;
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
64/86
64
public String getNaziv() {
return naziv;
}
public void setNaziv(String naziv) {
this.naziv = naziv;
}
@XmlTransient
public List getKursList() {
return kursList;
}
public void setKursList(List kursList) {
this.kursList = kursList;
}
@Override
public int hashCode() {
int hash = 0;
hash += (jezikID != null ? jezikID.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Jezik)) {
return false;
}
Jezik other = (Jezik) object;
if ((this.jezikID == null && other.jezikID != null) || (this.jezikID != null &&
!this.jezikID.equals(other.jezikID))) {
return false;
}
return true;
}
@Override
public String toString() {
return naziv;
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
65/86
65
@Entity
@Table(name = "kurs")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Kurs.findAll", query = "SELECT k FROM Kurs k"),
@NamedQuery(name = "Kurs.findByKursID", query = "SELECT k FROM Kurs k WHERE k.kursID =
:kursID"),
@NamedQuery(name = "Kurs.findByNaziv", query = "SELECT k FROM Kurs k WHERE k.naziv = :naziv"),
@NamedQuery(name = "Kurs.findByTrajanje", query = "SELECT k FROM Kurs k WHERE k.trajanje =
:trajanje"),
@NamedQuery(name = "Kurs.findByCena", query = "SELECT k FROM Kurs k WHERE k.cena = :cena")})
public class Kurs implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "KursID")
private Integer kursID;
@Size(max = 50)
@Column(name = "Naziv")
private String naziv;
@Size(max = 50)
@Column(name = "Trajanje")
private String trajanje;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these
annotations to enforce field validation
@Column(name = "Cena")
private Double cena;
@OneToMany(mappedBy = "kursID")
private List stavkaracunaList;
@JoinColumn(name = "JezikID", referencedColumnName = "JezikID")
@ManyToOne
private Jezik jezikID;
@JoinColumn(name = "ZaposleniID", referencedColumnName = "ZaposleniID")
@ManyToOne
private Zaposleni zaposleniID;
public Kurs() {
}
public Kurs(Integer kursID) {
this.kursID = kursID;
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
66/86
66
}
public Integer getKursID() {
return kursID;
}
public void setKursID(Integer kursID) {
this.kursID = kursID;
}
public String getNaziv() {
return naziv;
}
public void setNaziv(String naziv) {
this.naziv = naziv;
}
public String getTrajanje() {
return trajanje;
}
public void setTrajanje(String trajanje) {
this.trajanje = trajanje;
}
public Double getCena() {
return cena;
}
public void setCena(Double cena) {
this.cena = cena;
}
@XmlTransient
public List getStavkaracunaList() {
return stavkaracunaList;
}
public void setStavkaracunaList(List stavkaracunaList) {
this.stavkaracunaList = stavkaracunaList;
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
67/86
67
public Jezik getJezikID() {
return jezikID;
}
public void setJezikID(Jezik jezikID) {
this.jezikID = jezikID;
}
public Zaposleni getZaposleniID() {
return zaposleniID;
}
public void setZaposleniID(Zaposleni zaposleniID) {
this.zaposleniID = zaposleniID;
}
@Override
public int hashCode() {
int hash = 0;
hash += (kursID != null ? kursID.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Kurs)) {
return false;
}
Kurs other = (Kurs) object;
if ((this.kursID == null && other.kursID != null) || (this.kursID != null &&
!this.kursID.equals(other.kursID))) {
return false;
}
return true;
}
@Override
public String toString() {
return "naziv";
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
68/86
68
@Entity
@Table(name = "polaznik")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Polaznik.findAll", query = "SELECT p FROM Polaznik p"),
@NamedQuery(name = "Polaznik.findByPolaznikID", query = "SELECT p FROM Polaznik p WHERE
p.polaznikID = :polaznikID"),
@NamedQuery(name = "Polaznik.findByIme", query = "SELECT p FROM Polaznik p WHERE p.ime =
:ime"),
@NamedQuery(name = "Polaznik.findByPrezime", query = "SELECT p FROM Polaznik p WHERE
p.prezime = :prezime"),
@NamedQuery(name = "Polaznik.findByJmbg", query = "SELECT p FROM Polaznik p WHERE p.jmbg =
:jmbg"),
@NamedQuery(name = "Polaznik.findByKontakt", query = "SELECT p FROM Polaznik p WHERE
p.kontakt = :kontakt"),
@NamedQuery(name = "Polaznik.findByDatumUpisa", query = "SELECT p FROM Polaznik p WHERE
p.datumUpisa = :datumUpisa")})
public class Polaznik implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "PolaznikID")
private Integer polaznikID;
@Size(max = 50)
@Column(name = "Ime")
private String ime;
@Size(max = 50)
@Column(name = "Prezime")
private String prezime;
@Size(max = 50)
@Column(name = "JMBG")
private String jmbg;
@Size(max = 50)
@Column(name = "Kontakt")
private String kontakt;
@Column(name = "DatumUpisa")
@Temporal(TemporalType.DATE)
private Date datumUpisa;
@OneToMany(mappedBy = "polaznikID")
private List racunList;
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
69/86
69
public Polaznik() {
}
public Polaznik(Integer polaznikID) {
this.polaznikID = polaznikID;
}
public Integer getPolaznikID() {
return polaznikID;
}
public void setPolaznikID(Integer polaznikID) {
this.polaznikID = polaznikID;
}
public String getIme() {
return ime;
}
public void setIme(String ime) {
this.ime = ime;
}
public String getPrezime() {
return prezime;
}
public void setPrezime(String prezime) {
this.prezime = prezime;
}
public String getJmbg() {
return jmbg;
}
public void setJmbg(String jmbg) {
this.jmbg = jmbg;
}
public String getKontakt() {
return kontakt;
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
70/86
70
}
public void setKontakt(String kontakt) {
this.kontakt = kontakt;
}
public Date getDatumUpisa() {
return datumUpisa;
}
public void setDatumUpisa(Date datumUpisa) {
this.datumUpisa = datumUpisa;
}
@XmlTransient
public List getRacunList() {
return racunList;
}
public void setRacunList(List racunList) {
this.racunList = racunList;
}
@Override
public int hashCode() {
int hash = 0;
hash += (polaznikID != null ? polaznikID.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof Polaznik)) {
return false;
}
Polaznik other = (Polaznik) object;
if ((this.polaznikID == null && other.polaznikID != null) || (this.polaznikID != null &&
!this.polaznikID.equals(other.polaznikID))) {
return false;
}
return true;
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
71/86
71
@Override
public String toString() {
return ime + " " + prezime;
}
@Entity
@Table(name = "racun")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Racun.findAll", query = "SELECT r FROM Racun r"),
@NamedQuery(name = "Racun.findByBrojRacuna", query = "SELECT r FROM Racun r WHERE
r.brojRacuna = :brojRacuna"),
@NamedQuery(name = "Racun.findByUkupnaVrednost", query = "SELECT r FROM Racun r WHERE
r.ukupnaVrednost = :ukupnaVrednost"),
@NamedQuery(name = "Racun.findByDatumKreiranja", query = "SELECT r FROM Racun r WHERE
r.datumKreiranja = :datumKreiranja")})
public class Racun implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "BrojRacuna")
private Integer brojRacuna;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these
annotations to enforce field validation
@Column(name = "UkupnaVrednost")
private Double ukupnaVrednost;
@Column(name = "DatumKreiranja")
@Temporal(TemporalType.DATE)
private Date datumKreiranja;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "racun")
private List stavkaracunaList;
@JoinColumn(name = "PolaznikID", referencedColumnName = "PolaznikID")
@ManyToOne
private Polaznik polaznikID;
@JoinColumn(name = "ZaposleniID", referencedColumnName = "ZaposleniID")
@ManyToOne
private Zaposleni zaposleniID;
public Racun() {
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
72/86
72
public Racun(Integer brojRacuna) {
this.brojRacuna = brojRacuna;
}
public Integer getBrojRacuna() {
return brojRacuna;
}
public void setBrojRacuna(Integer brojRacuna) {
this.brojRacuna = brojRacuna;
}
public Double getUkupnaVrednost() {
return ukupnaVrednost;
}
public void setUkupnaVrednost(Double ukupnaVrednost) {
this.ukupnaVrednost = ukupnaVrednost;
}
public Date getDatumKreiranja() {
return datumKreiranja;
}
public void setDatumKreiranja(Date datumKreiranja) {
this.datumKreiranja = datumKreiranja;
}
@XmlTransient
public List getStavkaracunaList() {
return stavkaracunaList;
}
public void setStavkaracunaList(List stavkaracunaList) {
this.stavkaracunaList = stavkaracunaList;
}
public Polaznik getPolaznikID() {
return polaznikID;
}
-
8/18/2019 Web Aplikacija - Skola Stranih Jezika
73/86
73
public void setPolaznikID(Polaznik polaznikID) {
this.polaznikID = polaznikID;
}
public Zaposleni getZaposleniID() {
return zaposleniID;
}
public void setZaposleniID(Zaposleni zaposleniID) {
this.zaposleniID = zaposleniID;
}
@Override
public int hashCode() {
int hash = 0;
hash += (brojRacuna != null ? brojRacuna.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Racun)) {
return false;
}
Racun other = (Racun) object;
if ((this.brojRacuna == null && other.brojRacuna != null) || (this.brojRacuna != null &&
!th