PDA

Prikaži potpunu verziju : OOP Ispitni zadatak


Goonotora
12.7.2013, 21:05
U julsom ispitnom roku sam imao zadatak realizacije softvera koji ce da simulira podizanje novca sa bankomata.

Prvi deo zadatka je da se kreiraju klase sa atributima koji su potrebni za realizaciju funkcionalnosti. Klase sam kreirao u klasnom dijagramu pomocu StarUMLa, i dodao sam pojedine atribute:

Klijent(KlijentID:int, Ime:string, Prezime: String,...)
Kartica(BrKartice:int, KarticaTip:string,...)
Bankomat(BankomatID:int,...)
Banka(BankaID:int, Naziv:string)NAPOMENA: Tri tacke oznacavaju da neki atribut verovatno nedostaje.
Problem je taj sto ne znam koliko atributa mi treba da bi se obezbedila funkcionalnost.:icon_scra

Drugi deo zadatka se nadovezuje na prvi tako sto se pravi dijagram sekvence sa prethodno definisanim ucesnicima u vidu kreiranih klasa. Ovde treba detaljno definisati SVE metode koje se moraju dodati u klasu.

A sad jos veci problem: ja nikad nisam koristio bankomat, niti imam bilo kakvu platnu karticu, pa ne poznajem proceduru (samim tim i sve metode u ovom slucaju). Ako imate savet, ili predlog za neku dobru literaturu sa resenim primerima, unapred vam se zahvaljujem.

voodoo_
12.7.2013, 21:24
http://en.wikipedia.org/wiki/Automated_teller_machine
http://www.youtube.com/watch?v=IcJPg9RW4Qk

MG-RAY
13.7.2013, 7:53
Hmm... Da li si to počeo da radiš model neke baze ili, pošto vidim neki ID koji ti generalno ne treba, sem ako nije eksplicitno naglašeno?

Bilo kako bilo, ovo su modeli koji ti trebaju:


Banka - sadrzi vise racuna i klijenata

Racun - moze biti deljen medju klijentima. Identifikuje se sa jedinstevnim brojem i vlasnikom. Može biti u domaćoj ili stranoj valuti.

Korisnik - moze imati vise od jednog racuna u istoj ili razlicitim bankama. Sadrzi podatke koje mozes naci u licnoj karti.

Kartica - atributi su joj Broj (string, 16 cifara), CSV(string, 3 cifre), Pin(string, 4 cifre), Ime i prezime korisnika, i dva datuma koji oznacavaju period validnosti (Valid From, Valid Thru). Vezana je za racun. Moze biti vise kartica na istom racunu. Tip kartice ti generalno nije potreban jer ga mozes dobiti iz broja, ali radi jednostavnosti mozes da ubacis i njega.

Bankomat - Pripada banci, moze koristiti samo specifirane vrste kartica. Bankomat ne mora pripadati banci u kojoj se nalazi korisnikov račun da bi podigao novac.


Use case ide nesto ovako:

- Klijent dolazi do bankomata i ubacuje karticu.
- Izbor jezika
- Bankomat trazi unosenje Pin koda, ukoliko je ispravan, ide se na sledeci korak.
- Bankomat daje seledece opcije:
--- Podizanje novca
--- Upit stanja
--- Promena Pin-a
--- Depozit novca (nisam siguran koliko to radi u Srbiji)

Upit stanja:
Vraca iznos na racunu, naplacuje se po predefinisanoj tarifi.

Promena Pin-a
Nisam koristio na bankomatu tako da ne znam. Budi mastovit. :D

Podizanje novca:
- Izbor tipa racuna (štedni/tekući/etc) (ovo se radi i na upitu stanja)
- Izbor sume (predefinisana vrednost ili ručni unos)
- Potvrda transakcije i izbor štampanja slip-a.
- Ukoliko je račun u drugoj banci i u stranoj valuti, bankomat će ponuditi izbor konverzije (kurs lokalne banke ili kurs banke u kojoj se račun nalazi)
- Isplata novca ili pojedena kartica ako je stanje na njoj 0 ili je došlo do neke druge greške.

Verovatno sam nešto i ispustio ali se nadam da će ti pomoći. :)

Goonotora
13.7.2013, 10:49
Ne, ovo nije modelovanje baze, vec pravljenje klasnog dijagrama u UMLu. ID nije eksplicitno naglasen, ali mislim da bi on bio koristan za laksi rad sistema, ako nije lako cu ga ukloniti.

Use case nije trazen u zadatku, vec 1 klasni dijagram (za kreiranje klasa) i 1 dijagram sekvenci. Mada bi po opisu tvog use case zakljucio da ti je to dijagram sekvenci.

Mozda je bolje da sam postavio ceo tekst zadatka, da bi imali jasniju sliku.46837

MG-RAY
13.7.2013, 18:26
Ovo što sam ti ja ispisao je bio use case, otprilike. Nije nacrtan, naravno.

Sequence dijagram predstavlja interakciju između tvojih objekata i treba da ilustruje pozive metoda i callbackove, npr ovako nesto (http://www.websequencediagrams.com/cgi-bin/cdraw?lz=dGl0bGUgQVRNCgpLbGlqZW50LT5BVE06IFViYWNpI GthcnRpY3UgKCkKQVRNLT4AHQc6IFphaHRldiB6YSBQSU4gKCk ANAorADkGbm9zABMIADUFK0JhbmthOiBQcm92ZXIALgkAEQUtL T4tQVRNOlBJTiBPSwBbEkl6Ym9yIG9wY2lqZSgpCgpub3RlIHJ pZ2h0IG9mIACBCwlldGMuLi4&s=napkin).