online servis za porucivanje hrane

46
UNIVERZITET U BEOGRADU FAKULTET ORGANIZACIONIH NAUKA Seminarski rad iz predmeta PROJEKTOVANJE SOFTVERA Naziv teme: Online serivis za poručivanje hrane Beograd 2012.

Upload: majdicaaa

Post on 27-Oct-2014

46 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Online Servis Za Porucivanje Hrane

UNIVERZITET U BEOGRADUFAKULTET ORGANIZACIONIH NAUKA

Seminarski rad iz predmeta

PROJEKTOVANJE SOFTVERA

Naziv teme:

Online serivis za poručivanje hrane

Profesor : dr Siniša VlajićStudent : Nikolić Majda, 291/04

Beograd2012.

Page 2: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

1. PRIKUPLJANJE ZAHTEVA

Verbalni opis

Predmet ovog seminarskog rada je projektovanje aplikacije koja bi omogućila restoranima I kupcima online uslugu narucivanja hrane.

Specifikacija zahteva pomoću modela sučajeva korišćenja

Slučajevi koriščenja kupca:

Logovanje Kreiranje porudžbine Izmena porudzbine Izmena licnih podataka

Slučajevi korisćenja restorana:

Logovanje Dodavanje jela Brisanje jela Izmena cene Pregled porudzbina

Tekstualni opis slučajeva korišćenja

SK1: LOGOVANJE

NAZIV SK: Logovanje

AKTOR SK: Korisnik (Kupac ili restoran)

UČESNICI SK: Korisnik i program (u daljem tekstu sistem)

PREDUSLOV: Sistem je pokrenut. Sistem prikazuje formu za logovanje.

OSNOVNI SCENARIO SK:

Majda Nikolic 291/04

Kupac

Izmena licnihpodataka

Izmenaporudzbine

Kreiranjeporudzbine

Logovanje

Restoran

Logovanje

Brisanje jelaDodavanje jela

Pregledporudzbina

Izmena cene

Page 3: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

1. Korisnik unosi podatke. (APUSO)2. Korisnik poziva sistem da proveri unete podatke. (APSO)3. Sistem proverava unete podatke. (SO)4. Sistem prikazuje korisniku poruku o uspešnosti logovanja. (IA)

ALTERNATIVNI SCENARIO:

4.1 Ukoliko sistem ne pronađe korisnika obaveštava ga o neuspešnom logovanju. Prekida se izvršavanje scenarija.

SK2: KREIRANJE PORUDŽBINE

NAZIV SK: Kreiranje porudžbine

AKTOR SK: Kupac

UČESNICI SK: Kupac i sistem

PREDUSLOV: Sistem je pokrenut i Kupac je ulogovan pod svojom šifrom. Sistem prikazuje formu za operacije vezane za kupca. Kupac bira stavku „Izaberi hranu“ . Sistem inicijalno prikazuje spisak svih restorana.

OSNOVNI SCENARIO SK:

1. Kupac vrši izbor restorana. (ANSO)2. Kupac poziva sistem da prikaže meni izabranog restorana. (APSO)3. Sistem uzima podatke iz baze. (SO)4. Sistem prikazuje meni restorana. (IA)5. Kupac selektuje željena jela iz tabele menija. (APUSO)6. Kupac poziva sistem da sačuva porudžbinu. (APSO)7. Sistem čuva porudžbinu. (SO)8. Sistem obaveštava kupca o uspešnosti čuvanja porudžbine. (IA)

ALTERNATIVNI SCENARIO:

8.1 Ukoliko sistem ne može da sacuva porudžbinu, obaveštava Kupca o tome i prekida izvršenje scenarija.

SK3: IZMENA PORUDŽBINE

Majda Nikolic 291/04

Page 4: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

NAZIV SK: Izmena porudžbine

AKTOR SK: Kupac

UČESNICI SK: Kupac i sistem

PREDUSLOV: Sistem je pokrenut i Kupac je ulogovan pod svojom šifrom. Sistem prikazuje formu za operacije vezane za kupca. Kupac bira stavku „Izmeni porudžbinu“. Sistem inicijalno prikazuje korisniku sve porudžbine.

OSNOVNI SCENARIO SK:

1. Kupac vrši izbor porudžbine. (ANSO)2. Kupac poziva sistem da prikaže stavke izabrane porudžbine. (APSO)3. Sistem uzima podatke iz baze. (SO)4. Sistem prikazuje podatke. (IA)5. Kupac vrši izbor stavki za brisanje. (ANSO)6. Kupac poziva sistem da sačuva izmene. (APSO)7. Sistem čuva izmenjene podatke. (SO)8. Sistem obaveštava kupca o uspešnoj izmeni podataka. (IA)

ALTERNATIVNI SCENARIO:

8.1 Ukoliko sistem nije mogao da sačuva izmenjene podatke, obaveštava Kupca o tome i prekida izvršenje scenarija.

SK4: IZMENA LIČNIH PODATAKA

NAZIV SK: Izmena ličnih podataka

AKTOR SK: Kupac

UČESNICI SK: Kupac i sistem

PREDUSLOV: Sistem je pokrenut i Kupac je ulogovan pod svojom šifrom. Sistem prikazuje formu za operacije vezane za kupca. Kupac bira stavku „Izmeni lične podatke“. Sistem inicijalno prikazuje lične podatke ulogovanog kupca.

OSNOVNI SCENARIO SK:

1. Kupac unosi podatke ze izmenu. (ANSO)2. Kupac poziva sistem da sačuva podatke. (APSO)3. Sistem čuva izmenjene podatke. (SO)4. Sistem obavestava kupca o uspešnosti čuvanja podataka. (IA)

Majda Nikolic 291/04

Page 5: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

ALTERNATIVNI SCENARIO:

4.1 Ukoliko je Kupac uneo neispravne podatke, sistem ga obaveštava o tome.

4.2 Ukoliko sistem ne može da sačuva podatke, obaveštava Kupca o tome.

SK5:DODAVANJE JELA

NAZIV SK: Dodavanje jela

AKTOR SK: Restoran

UČESNICI SK: Restoran i sistem

PREDUSLOV: Sistem je pokrenut i Restoran je ulogovan pod svojom šifrom. Sistem prikazuje formu za operacije vezane za Restoran. Restoran bira stavku „Dodavanje jela“.

OSNOVNI SCENARIO SK:

1. Restoran unosi podatke o novom jelu. (APUSO)2. Restoran poziva sistem da zapamti novo jelo. (APSO)3. Sistem pamti novo jelo. (SO)4. Sistem prikazuje poruku o uspešnom pamćenju jela. (IA)

ALTERNATIVNI SCENARIO :

4.1 Ukoliko sistem ne može da zapamti novo jelo, prikazuje se poruka.

SK6 : BRISANJE JELA

NAZIV SK: Brisanje jela

AKTORI SK: Restoran

UČESNICI SK: Restoran i sistem

PREDUSLOV: Sistem je uključen i restoran je ulogovan. Sistem prikazuje formu za operacije vezane za restoran. Restoran bira stavku “Meni”. Sistem inicijalno prikazuje spisak svih jela na meniju.

OSNOVNI SCENARIO SK:

1. Restoran bira jelo iz menija. (APUSO)

Majda Nikolic 291/04

Page 6: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

2. Restoran poziva sistem da izbriše odabrano jelo iz baze podataka. (APSO)3. Sistem briše jelo iz baze podataka. (SO)4. Sistem prikazuje poruku o uspesnom brisanju jela. (IA)

ALTERNATIVNI SCENARIO:

4.1 Ako sistem ne može da izbrise jelo, sistem prikazuje poruku da nije uspelo brisanje. Prekida se izvršenje scenarija.

SK7: IZMENA CENE

NAZIV SK: Izmena cene

AKTORI SK: Restoran

UČESNICI SK: Restoran i sistem

PREDUSLOV: Sistem je uključen i restoran je ulogovan. Sistem prikazuje formu za operacije vezane za restoran. Restoran bira stavku “Meni”. Sistem inicijalno prikazuje spisak svih jela na meniju.

OSNOVNI SCENARIO SK:

1. Restoran bira jelo koje želi da izmeni iz menija. (APUSO)2. Restoran unosi novu cenu izabranog jela. (APUSO)3. Restoran poziva sistem da sačuva izmenu. (APSO)4. Sistem čuva podatke. (SO)5. Sistem prikazuje korisniku poruku o uspešnosti izmene podatka. (IA)

ALTERNATIVNI SCENARIO:

5.1 Ako sistem ne može da izmeni podatke, prikazuje poruku. Prekida se izvršenje scenarija.

SK8:PREGLED PORUDŽBINA

NAZIV SK: Pregled porudžbina

AKTORI SK: Restoran

UČESNICI SK: Restoran i sistem

Majda Nikolic 291/04

Page 7: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

PREDUSLOV: Sistem je uključen i restoran je ulogovan. Sistem prikazuje formu za operacije vezane za restoran. Restoran bira stavku “Pregled porudžbina”. Sistem inicijalno prikazuje spisak svih porudžbina.

OSNOVNI SCENARIO SK:

1. Restoran selektuje željenu porudžbinu. (APUSO)2. Restoran poziva sistem da mu prikaze stavke izabrane porudžbine i ukupan iznos. (APSO)3. Sistem uzima podatke date porudžbine. (SO)4. Sistem prikazuje podatke korisniku. (IA)

2. ANALIZA

Ponašanje softverskog sistema – Sistemski dijagram sekvenci

DS1:DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – LOGOVANJE

OSNOVNI SCENARIO SK:

1. Korisnik poziva sistem da proveri unete podatke. (APSO)

2. Sistem prikazuje korisniku poruku o uspešnosti logovanja. (IA)

ALTERNATIVNI SCENARIO:

2.1 Ukoliko sistem ne pronađe korisnika obaveštava ga o neuspešnom logovanju. Prekida se izvršavanje scenarija.

DS2: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – KREIRANJE PORUDŽBINE

Majda Nikolic 291/04

Page 8: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

OSNOVNI SCENARIO SK:

1. Kupac poziva sistem da prikaže spisak restorana. (APSO)2. Sistem prikazuje korisniku sve restorane. (IA)3. Kupac poziva sistem da prikaže meni izabranog restorana. (APSO)4. Sistem prikazuje meni restorana. (IA)5. Kupac poziva sistem da sa čuva porudžbinu. (APSO)6. Sistem obaveštava kupca o uspešnosti čuvanja porudžbine. (IA)

ALTERNATIVNI SCENARIO:

6.1 Ukoliko sistem ne može da sacuva porudžbinu, obaveštava Kupca o tome i prekida izvršenje scenarija.

DS3: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – IZMENA PORUDŽBINE

OSNOVNI SCENARIO SK:

1. Kupac poziva sistem da prikaže sve porudžbine i stavke izabrane porudžbine. (APSO)

2. Sistem prikazuje podatke. (IA)3. Kupac poziva sistem da sačuva izmene. (APSO)4. Sistem obaveštava kupca o uspešnoj izmeni podataka. (IA)

ALTERNATIVNI SCENARIO:

4.1 Ukoliko sistem nije mogao da sačuva izmenjene podatke, obaveštava Kupca o tome i prekida izvršenje scenarija.

Majda Nikolic 291/04

Page 9: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

DS4: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – IZMENA LIČNIH PODATAKA

OSNOVNI SCENARIO SK:

1. Kupac poziva sistem da prikaže podatke za izmenu. (APSO)2. Sistem prikazuje podatke. (IA) 3. Kupac poziva sistem da sačuva podatke. (APSO)4. Sistem obavestava kupca o uspešnosti čuvanja podataka. (IA)

ALTERNATIVNI SCENARIO:

4.1 Ukoliko je Kupac uneo neispravne podatke, sistem ga obaveštava o tome.

4.2 Ukoliko sistem ne može da sačuva podatke, obaveštava Kupca o tome.

DS 5: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – DODAVANJE JELA

OSNOVNI SCENARIO SK:

1. Restoran poziva sistem da zapamti novo jelo. (APSO) 2. Sistem prikazuje poruku o uspešnom pamćenju jela. (IA)

Majda Nikolic 291/04

Page 10: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

ALTERNATIVNI SCENARIO :

2.1. Ukoliko sistem ne moze da sačuva novo jelo, prikazuje se poruka. Prekida se izvršenje scenarija.

DS 6: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – BRISANJE JELA

OSNOVNI SCENARIO SK:

1. Restoran poziva sistem da prikaže sva jela . (APSO)2. Sistem prikazuje sva jela. (IA)3. Restoran poziva sistem da izbriše odabrano jelo iz baze

podataka. (APSO)4. Sistem prikazuje poruku o uspesnom brisanju jela. (IA)

ALTERNATIVNI SCENARIO:

4.1 Ako sistem ne može da izbrise jelo, prikazuje poruku da nije uspelo brisanje proizvoda. Prekida se izvršenje scenarija.

DS 7: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – IZMENA CENE

OSNOVNI SCENARIO SK:

1. Restoran poziva sistem da prikaže sva jela. (APSO) 2. Sistem prikazuje meni.(IA)3. Restoran poziva sistem da sačuva izmenu. (APSO)4. Sistem prikazuje korisniku poruku o uspešnosti izmene podatka.

(IA)

Majda Nikolic 291/04

Page 11: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

ALTERNATIVNI SCENARIO:

4.1 Ako sistem ne može da izmeni podatke, prikazuje poruku. Prekida se izvršenje scenarija.

DS 8: DIJAGRAM SEKVENCI SLUČAJA KORIŠĆENJA – PREGLED PORUDŽBINA

OSNOVNI SCENARIO SK:

1. Restoran poziva sistem da mu prikaze sve porudžbine, stavke izabrane porudžbine i ukupan iznos. (APSO)

2. Sistem prikazuje podatke. (IA)

Ponašanje softverskog sistema – Definisanje ugovora o sistemskim operacijama

UGOVOR UG1

OPERACIJA: VratiKorisnikID(Korisnik k)

VEZA SA SK: DS1

PREDUSLOV: -

POSTUSLOV: Korisnik je ulogovan

UGOVOR UG2

OPERACIJA: VratiSveRestorane()

VEZA SA SK: DS2

PREDUSLOV: -

POSTUSLOV: Vraćeni su restorani

Majda Nikolic 291/04

Page 12: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG3

OPERACIJA: VratiMeni(restoranID)

VEZA SA SK: DS2, DS4,DS5

PREDUSLOV: -

POSTUSLOV: Vraćen spisak jela

UGOVOR UG4

OPERACIJA: SačuvajPorudžbinu(Porudžbina p)

VEZA SA SK: DS2

PREDUSLOV: -

POSTUSLOV: Sačuvana porudžbina

UGOVOR UG5

OPERACIJA: IzmeniPorudžbinu(Porudžbina p)

VEZA SA SK: DS3

PREDUSLOV: Postojanje porudžbine

POSTUSLOV: Izmenjena porudžbina

UGOVOR UG6

OPERACIJA: VratiKupca(Kupac k)

VEZA SA SK: DS4

PREDUSLOV: -

POSTUSLOV: Prikazani podaci

UGOVOR UG7

OPERACIJA: SacuvajKupca(Kupac k)

VEZA SA SK: DS4

PREDUSLOV: -

POSTUSLOV: Sačuvan kupac

UGOVOR UG8

Majda Nikolic 291/04

Page 13: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

OPERACIJA: SačuvajNovoJelo(Jelo j)

VEZA SA SK: DS5

PREDUSLOV: -

POSTUSLOV: Sačuvano novo jelo

UGOVOR UG9

OPERACIJA: ObrišiJelo(Jelo j)

VEZA SA SK: DS6

PREDUSLOV: Postojanje jela

POSTUSLOV: Obrisano jelo

UGOVOR UG10

OPERACIJA: SačuvajNovuCenu(Jelo j)

VEZA SA SK: DS7

PREDUSLOV: Postojanje jela

POSTUSLOV: Izmenjeno jelo

UGOVOR UG11

OPERACIJA: VratiSvePorudzbina(sifra)

VEZA SA SK: DS3, DS8

PREDUSLOV: Postojanje porudžbina

POSTUSLOV: Vraćene su porudžbine

Majda Nikolic 291/04

Page 14: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Struktura softverskog sistema – Konceptualni (domenski) model

Relacioni model

Korisnik(KorisnikID, Username, Password)

Kupac(KupacID, Ime, Prezime, Ulica, Broj)

Restoran(RestoranID, Naziv)

Porudzbina(PorudzbinaID, Datum, UkupanIznos, KupacID, RestoranID)

StavkaPorudzbine(StavkaID, naziv, jeloID, porudzbinaID)

Majda Nikolic 291/04

Page 15: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Jelo(JeloID, Naziv, Cena)

3. PROJEKTOVANJE

Arhitektura softverskog sistema

U okviru faze projektovanja opisuje se fizička struktura i ponašanje softverskog sistema, tj. arhitektura softverskog sistema. U ovom seminarskom radu je korišćena klasična troslojna arhitektura.

Skladiste podataka

Korisnicki interfejs

Aplikaciona logika

Softverski sistem

I nivo III nivoII nivo

Skladiste podataka

Korisnicki interfejs Database

broker

Softverski sistem

I nivo III nivoII nivo

KontrolerPoslovna

logika

Aplikaciona logika

Treba isprojektovati svaki od elemenata tronivoiske arhitekture :

kontroler poslovna logika - domenske klase poslovna logika - sistemske operacije database broker skladište podataka korisnički interfejs

Majda Nikolic 291/04

Page 16: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Majda Nikolic 291/04

Page 17: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Projektovanje aplikacione logike - Kontroler

Kontroler poslovne logike je zadužen za komunikaciju između korisničkog interfejsa i sistemskih operacija.

KALKORISNIK

using System;using System.Collections.Generic;using System.Linq;using System.Text;using DomenskeKlase;using SistemskeOperacije;using SistemskeOperacije.KorisnikSO;

namespace KontrolerAplikacioneLogike{ public class KALKorisnik {

public string VratiIDKorisnika(Korisnik korisnikSelect) { VratiID vi = new VratiID(); Korisnik k = (Korisnik)vi.IzvrsiSO(korisnikSelect); return k.KorisnikID; } }}

KALKUPAC

using System;using System.Collections.Generic;using System.Linq;using System.Text;using DomenskeKlase;using SistemskeOperacije;using SistemskeOperacije.KupacSO;

namespace KontrolerAplikacioneLogike{ public class KALKupac {

public Kupac Vrati(Kupac kupacSelect) { VratiKupca vk = new VratiKupca(); Kupac kupac = (Kupac)vk.IzvrsiSO(kupacSelect); return kupac; }

Majda Nikolic 291/04

Page 18: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

public bool Sacuvaj(Kupac kupacUpdate) { SacuvajKupca sc = new SacuvajKupca(); bool odgovor = (bool)sc.IzvrsiSO(kupacUpdate); if (odgovor) { return true; } else { return false; } } }}

KALRESTORAN

using System;using System.Collections.Generic;using System.Linq;using System.Text;using DomenskeKlase;using SistemskeOperacije;using SistemskeOperacije.RestoranSO;

namespace KontrolerAplikacioneLogike{ public class KALRestoran {

public List<Restoran> VratiSve(Restoran restoranSelect) { VratiSveRestorane vsr = new VratiSveRestorane(); return (List<Restoran>)vsr.IzvrsiSO(restoranSelect); } }}

Majda Nikolic 291/04

Page 19: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

KALPORUDŽBINA

using System;using System.Collections.Generic;using System.Linq;using System.Text;using DomenskeKlase;using SistemskeOperacije;using SistemskeOperacije.PorudzbinaSO;using SistemskeOperacije.StavkaPorudzbineSO;

namespace KontrolerAplikacioneLogike{ public class KALPorudzbina { public bool Ubaci(Porudzbina porudzbinaInsert) { SacuvajPorudzbinu sp = new SacuvajPorudzbinu(); bool odgovor = (bool)sp.IzvrsiSO(porudzbinaInsert); if (odgovor) { for (int i = 0; i < porudzbinaInsert.ListaStavki.Count; i++) { SacuvajStavku ss = new SacuvajStavku(); bool odgovorS = (bool)ss.IzvrsiSO(porudzbinaInsert.ListaStavki[i]); if (!odgovorS) { return false; } } return true; } else { return false; } }

public List<Porudzbina> VratiSve(Porudzbina porudzbinaSelect) { VratiSvePorudzbine vsp = new VratiSvePorudzbine(); List<Porudzbina> listaPorudzbina = (List<Porudzbina>)vsp.IzvrsiSO(porudzbinaSelect); if (listaPorudzbina.Count > 0) { for (int i = 0; i < listaPorudzbina.Count; i++) { StavkaPorudzbine sp = new StavkaPorudzbine("", "", "", ""); sp.PodesiUslovPretraga("PorudzbinaID", listaPorudzbina[i].PorudzbinaID); VratiSveStavke vss = new VratiSveStavke(); List<StavkaPorudzbine> listaStavki = (List<StavkaPorudzbine>)vss.IzvrsiSO(sp); listaPorudzbina[i].ListaStavki = listaStavki; } } return listaPorudzbina; }

public bool Izmeni(Porudzbina porudzbinaUpdate) { IzmeniPorudzbinu ip = new IzmeniPorudzbinu(); bool odgovor = (bool)ip.IzvrsiSO(porudzbinaUpdate); if (odgovor) { porudzbinaUpdate.ListaStavki[0].PorudzbinaID = porudzbinaUpdate.PorudzbinaID; ObrisiStavku os = new ObrisiStavku(); bool odgovorOS = (bool)os.IzvrsiSO(porudzbinaUpdate.ListaStavki[0]);

if (odgovorOS) {

Majda Nikolic 291/04

Page 20: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

for (int i = 0; i < porudzbinaUpdate.ListaStavki.Count; i++) { porudzbinaUpdate.ListaStavki[i].PorudzbinaID = porudzbinaUpdate.PorudzbinaID; SacuvajStavku ss = new SacuvajStavku(); bool odgovorSS = (bool)ss.IzvrsiSO(porudzbinaUpdate.ListaStavki[i]); if (!odgovorSS) { return false; } } return true; } else { return false; } } else { return false; } } }}

KALJELO

using System;using System.Collections.Generic;using System.Linq;using System.Text;using DomenskeKlase;using SistemskeOperacije;using SistemskeOperacije.JeloSO;

namespace KontrolerAplikacioneLogike{ public class KALJelo {

public List<Jelo> VratiSve(Jelo jeloSelect) { VratiSvaJela vsj = new VratiSvaJela(); return (List<Jelo>)vsj.IzvrsiSO(jeloSelect); }

Majda Nikolic 291/04

Page 21: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

public bool Obrisi(Jelo jeloDelete) { ObrisiJelo oj = new ObrisiJelo(); bool odgovor = (bool)oj.IzvrsiSO(jeloDelete); if (odgovor) { return true; } else { return false; } }

public bool Sacuvaj(Jelo jeloUpdate) { SacuvajNovuCenu snc = new SacuvajNovuCenu(); bool odgovor = (bool)snc.IzvrsiSO(jeloUpdate); if (odgovor) { return true; } else { return false; } }

public bool Ubaci(Jelo jeloInsert) { SacuvajNovoJelo snj = new SacuvajNovoJelo(); bool odgovor = (bool)snj.IzvrsiSO(jeloInsert); if (odgovor) { return true; } else { return false; } } }}

Majda Nikolic 291/04

Page 22: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Projektovanje strukture soft. sistema (aplikaciona logika– poslovna logika – domenske klase)

Softverske klase strukture prave se na osnovu konceptualnog modela.

Projektovanje ponašanja softverskog sistema (Aplikaciona logika- Poslovna logika-Sistemske operacije)

UGOVOR UG1

OPERACIJA: VratiKorisnikID(Korisnik k)

POSTUSLOV: Korisnik je ulogovan

public class VratiID:OpstaSOKorisnik { public override object Izvrsi(BazniObjekat bo, Broker brok) { Korisnik korisnik = (Korisnik)bo; List<BazniObjekat> listaBaznihObjekata = (List<BazniObjekat>)brok.VratiSveObjekte(korisnik); List<Korisnik> listaKorisnika = new List<Korisnik>();

for (int i = 0; i < listaBaznihObjekata.Count; i++) { listaKorisnika.Add((Korisnik)listaBaznihObjekata[i]);

Majda Nikolic 291/04

Page 23: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

if (listaKorisnika[i].Username == korisnik.Username && listaKorisnika[i].Password == korisnik.Password) { Korisnik ulogovan = listaKorisnika[i]; return ulogovan; } }

return null; } }

UGOVOR UG2

OPERACIJA: VratiSveRestorane()

POSTUSLOV: Vraćeni su restorani

public class VratiSveRestorane:OpstaSORestoran { public override object Izvrsi(BazniObjekat bo, Broker brok) { Restoran restoran = (Restoran)bo;

List<BazniObjekat> listaBaznihObjekata = brok.VratiSveObjekte(restoran); List<Restoran> listaRestorana = new List<Restoran>(); for (int i = 0; i < listaBaznihObjekata.Count; i++) { listaRestorana.Add((Restoran)listaBaznihObjekata[i]); }

return listaRestorana;

} }

Majda Nikolic 291/04

Page 24: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG3

OPERACIJA: VratiMeni(restoranID)

POSTUSLOV: Vraćen spisak jela

public class VratiSvaJela:OpstaSOJelo { public override object Izvrsi(BazniObjekat bo, Broker brok) { Jelo jelo = (Jelo)bo; List<BazniObjekat> listaBaznihObjekata = brok.VratiSveObjekteSaUslovom(jelo); List<Jelo> listaJela = new List<Jelo>(); for (int i = 0; i < listaBaznihObjekata.Count; i++) { listaJela.Add((Jelo)listaBaznihObjekata[i]); }

return listaJela; } }

Majda Nikolic 291/04

Page 25: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG4

OPERACIJA: SačuvajPorudžbinu(Porudžbina p)

POSTUSLOV: Sačuvana porudžbina

public class SacuvajPorudzbinu:OpstaSOPorudzbina { public override object Izvrsi(BazniObjekat bo, Broker brok) { Porudzbina p = (Porudzbina)bo; int brojRedova = brok.Ubaci(p); if (brojRedova == 1) { return true; } else { return false; } } }

UGOVOR UG5

OPERACIJA: IzmeniPorudžbinu(Porudžbina p)

POSTUSLOV: Izmenjena porudžbina

public class IzmeniPorudzbinu:OpstaSOPorudzbina { public override object Izvrsi(BazniObjekat bo, Broker brok) { try { Porudzbina p = (Porudzbina)bo; int brojRedova = brok.Izmeni(p); return true;

} catch (Exception) { return false; }

Majda Nikolic 291/04

Page 26: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

} }

UGOVOR UG6

OPERACIJA: VratiKupca(kupacID)

POSTUSLOV: Prikazani podaci

public class VratiKupca: OpstaSOKupac { public override object Izvrsi(BazniObjekat bo, Broker brok) { Kupac kupac = (Kupac)bo; BazniObjekat kupacObjekat = brok.VratiObjekat(kupac); Kupac k = (Kupac)kupacObjekat; return k; } }

UGOVOR UG7

OPERACIJA: SacuvajKupca(Kupac k)

POSTUSLOV: Sačuvan kupac

Majda Nikolic 291/04

Page 27: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

public class SacuvajKupca : OpstaSOKupac { public override object Izvrsi(BazniObjekat bo, Broker brok) { try { Kupac k = (Kupac)bo; int brojRedova = brok.Izmeni(k); return true;

} catch (Exception) { return false; } } }

UGOVOR UG8

OPERACIJA: SačuvajNovoJelo(Jelo j)

POSTUSLOV: Sačuvano novo jelo

public class SacuvajNovoJelo : OpstaSOJelo { public override object Izvrsi(BazniObjekat bo, Broker brok) { Jelo j = (Jelo)bo; int brojRedova = brok.Ubaci(j); if (brojRedova == 1) { return true; } else { return false; } } }

Majda Nikolic 291/04

Page 28: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG9

OPERACIJA: ObrišiJelo(Jelo j)

POSTUSLOV: Obrisano jelo

public class ObrisiJelo:OpstaSOJelo { public override object Izvrsi(BazniObjekat bo, Broker brok) { Jelo jelo = (Jelo)bo; int brojRedova = brok.Obrisi(jelo); if (brojRedova == 1) { return true; } else { return false; } } }

Majda Nikolic 291/04

Page 29: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG10

OPERACIJA: SačuvajNovuCenu(Jelo j)

POSTUSLOV: Izmenjeno jelo

public class SacuvajNovuCenu:OpstaSOJelo { public override object Izvrsi(BazniObjekat bo, Broker brok) { try { Jelo jelo = (Jelo)bo; int brojRedova = brok.Izmeni(jelo); return true; } catch (Exception) { return false; } } }

UGOVOR UG11

OPERACIJA: VratiSvePorudzbine(sifra)

POSTUSLOV: Vraćene su porudžbine

public class VratiSvePorudzbine:OpstaSOPorudzbina { public override object Izvrsi(BazniObjekat bo, Broker brok) { Porudzbina porudzbina = (Porudzbina)bo; List<BazniObjekat> listaBaznihObjekata = brok.VratiSveObjekteSaUslovom(porudzbina); List<Porudzbina> listaPorudzbina = new List<Porudzbina>(); for (int i = 0; i < listaBaznihObjekata.Count; i++) { Porudzbina porudzbina_objekat = (Porudzbina)listaBaznihObjekata[i];

StavkaPorudzbine sp = new StavkaPorudzbine("", "", "", ""); sp.PodesiUslovPretraga("PorudzbinaID", porudzbina_objekat.PorudzbinaID);

List<BazniObjekat> listaBaznihObjekata2 = brok.VratiSveObjekteSaUslovom(sp); List<StavkaPorudzbine> listaStavki = new List<StavkaPorudzbine>();

Majda Nikolic 291/04

Page 30: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

for (int j = 0; j < listaBaznihObjekata2.Count; j++) { listaStavki.Add((StavkaPorudzbine)listaBaznihObjekata2[i]); } porudzbina_objekat.ListaStavki = listaStavki;

listaPorudzbina.Add(porudzbina_objekat); } return listaPorudzbina; } }

UGOVOR UG12

OPERACIJA: VratiSveStavke()

POSTUSLOV: Vraćene su stavke porudžbine

public class VratiSveStavke:OpstaSOStavka { public override object Izvrsi(BazniObjekat bo, Broker brok) { StavkaPorudzbine stavka = (StavkaPorudzbine)bo;

List<BazniObjekat> listaBaznihObjekata = brok.VratiSveObjekte(stavka); List<StavkaPorudzbine> listaStavki = new List<StavkaPorudzbine>(); for (int i = 0; i < listaBaznihObjekata.Count; i++) { listaStavki.Add((StavkaPorudzbine)listaBaznihObjekata[i]); }

return listaStavki;

} }

Majda Nikolic 291/04

Page 31: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG13

OPERACIJA: SacuvajStavku()

POSTUSLOV: Sačuvana je stavka porudžbine

public class SacuvajStavku:OpstaSOStavka { public override object Izvrsi(BazniObjekat bo, Broker brok) { StavkaPorudzbine sp = (StavkaPorudzbine)bo; int brojRedova = brok.Ubaci(sp); if (brojRedova == 1) { return true; } else { return false; }

} }

Majda Nikolic 291/04

Page 32: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

UGOVOR UG14

OPERACIJA: ObrisiStavku()

POSTUSLOV: Obrisana je stavka porudžbine

public class ObrisiStavku:OpstaSOStavka { public override object Izvrsi(BazniObjekat bo, Broker brok) { StavkaPorudzbine stavka = (StavkaPorudzbine)bo; int brojRedova = brok.Obrisi(stavka); if (brojRedova == 1) { return true; } else { return false; } } }

Nakon projektovanja svake od SO prelazi se na projektovanje klase koja je odgovorna za konekciju sa bazom I za kontrolu izvrsenja transakcije.

public class OpstaSO { protected Broker broker;

public OpstaSO() { this.broker = new Broker(); }

public object IzvrsiSO(BazniObjekat bo) { object output = null;

broker.OtvoriKonekciju(); broker.ZapocniTransakciju();

try {

Majda Nikolic 291/04

Page 33: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

output = Izvrsi(bo, broker); broker.PrihvatiTransakciju(); } catch (Exception e) { broker.PonistiTransakciju(); throw e; } finally { broker.ZatvoriKonekciju(); }

return output; }

public virtual object Izvrsi(BazniObjekat bo, Broker broker) { return null; } }

Majda Nikolic 291/04

Page 34: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Projektovanje aplikacione logike – Database broker

Klasa Database broker je perzistentni okvir koji realizujr sledeće metode:

METODE POSTUSLOV

void OtvoriKonekciju()Uspostavlja se veza (konekcija) sa bazom podataka.

void ZatvoriKonekciju()Prekida se veza (konekcija) sa BP.

bool ZapocniTransakciju()Počinje transakcija.

bool PrihvatiTransakciju()Promene su uspešno zapamćene u bazi.

bool PonistiTransakciju()Promene nisu zapamćene u bazi (poništene su).

BazniObjekat VratiObjekat(BazniObjekat bo)

Ove metode projektovane su kao generičke, kako ne bi broj operacija DatabaseBroker-a rastao sa brojem klasa. Stoga je napravljena generalna klasa za specifične klase, BazniObjekat. Time ove metode mogu da prihvate različite domenske objekte preko parametara, pod uslovom da domenski objekti implementiraju interfejs BazniObjekat i njegove odgovarajuće metode. Ove metode vraćaju određenu vrednost, u zavisnosti od toga kakva je uspešnost njihovog izvršenja.

int Izmeni(BazniObjekat bo)

List<BazniObjekat> VratiSveObjekteSaUslovom(BazniObjekat bo)

int Obrisi(BazniObjekat bo)

int Ubaci(BazniObjekat bo)

List<BazniObjekat> VratiSveObjekte(BazniObjekat bo)

Interfejs BazniObjekat izgleda ovako:

public interface BazniObjekat { string VratiNazivTabele(); string VratiParametreZaUnos(); string VratiParametreZaIzmenu(); string VratiSpisakParametara(); string VratiUslov();

BazniObjekat VratiObjekat(DataRow dataRow); }

Njegove operacije implementira svaka od domenskih klasa kako bi imala mogučnost komuniciranja sa brokerom. Rezultat projektovanja klase Broker i apstraktne klase BazniObjekat prikazan je na sledećem dijagramu klasa:

Majda Nikolic 291/04

Page 35: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Majda Nikolic 291/04

Page 36: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Majda Nikolic 291/04

Skladište podataka

Korisnički interfejs

Softverski sistem

Struktura softverskog sistema

Aplikaciona logika

DataBase Broker

Page 37: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Projektovanje skladišta podataka

Skladište podataka projektujemo na osnovu softverskih klasa strukture. Kao rezultat dobijamo tabele relacionog sistema za upravljanje bazom podataka.

Table: KORISNIK

Columns:Name TypeKorisnikID TextUsername TextPassword Text

TableIndexes:Name Number of fieldsPrimaryKey 1Fields: KorisnikID

Table: KUPAC

Columns:Name TypeKupacID TextIme TextPrezime TextUlica TextBroj Text

TableIndexes:Name Number of fieldsPrimaryKey 1Fields: KupacID

Table: RESTORAN

Columns:Name TypeRestoranID TextNaziv Text

TableIndexes:

Majda Nikolic 291/04

Page 38: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Name Number of fieldsPrimaryKey 1Fields: RestoranID

Table: PORUDŽBINA

Columns:Name TypePorudzbinaID AutoNumberDatum TextUkupanIznos TextKupacID TextRestoranID Text

TableIndexes:Name Number of fieldsPrimaryKey 1Fields: PorudzbinaIDSecondaryKey 2Fields: KupacID, RestoranID

Table: STAVKAPORUDŽBINE

Columns:Name TypeStavkaID AutoNumberJeloID TextNaziv TextPorudzbinaID Number

TableIndexes:Name Number of fieldsPrimaryKey 2Fields: StavkaID, PorudzbinaIDSecondaryKey 1Fields: JeloID

Table: JELO

Columns:Name TypeJeloID Text

Majda Nikolic 291/04

Page 39: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Naziv TextCena Text

TableIndexes:Name Number of fieldsPrimaryKey 1Fields: JeloID

Struktura korisničkog interfejsa

Korisnički interfejs predstavlja ulazno-izlaznu reprezentaciju softverskog sistema.

On se sastoji iz dva dela : kontrolera korisničkog interfejsa i ekranske forme.

Aktor

Ekranska forma

Kontroler KI

Softverski sistem

Korisnički interfejs

Majda Nikolic 291/04

Page 40: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Majda Nikolic 291/04

Skladište podataka

Struktura softverskog sistema

Aplikaciona logika

DataBase Broker

Korisnički i nterfejs

Softverski sistem

Page 41: Online Servis Za Porucivanje Hrane

Online servis za poručivanje hrane

Projektovanje ekranskih formi

Majda Nikolic 291/04