zlatkoiv
24.9.2009, 11:05
E ljudi imam ovakav problem za ispit i trebam pomoc:
Napisati C++ kod koji simulira korišćenje ranaca. Svaki ranac ima određen zapreminski kapacitet, izražen u litrama, kao i nosivost, izraženu u kilogramima. U ranac se može ubaciti razni teret, koji ima svoju zapreminu i težinu. U svakom trenutku moguće je saznati koliko je prostora ostalo slobodno u rancu, ali ne i kolika je preostala nosivost ranca. Ukoliko se u ranac ubaci više kilograma nego što je njegova nosivost, ranac će da pukne i potrebno ga je zašiti.
Napisati apstraktnu klasu Ranac, sa javnim metodama:
float kapacitet()
float slobodno()
void ubaci(Teret& t)
void sadrzaj()
bool citav()
void registrujPosmatraca(Posmatrac& p)
void zakrpi()
Prve dvije metode vraćaju ukupni i preostali (zapreminski) kapacitet ranca. Treća ubacuje neki teret u ranac. Ukoliko se pokuša ubaciti teret čija je zapremina veća od preostale slobodne zapremine ranca, metoda treba da baci izuzetak tipa PrekoracenjeKapaciteta (tu klasu treba izvesti iz klase exception). Međutim, ukoliko dođe do prekoračenja nosivosti ranca, dolazi do pucanja ranca i potrebno ga je zakrpiti (na kasnije opisan način). Četvrta metoda na ekran ispisuje kompletan sadržaj ranca (za svaki komad tereta se ispisuje njegov naziv). Peta vraća true ukoliko je ranac još uvijek čitav (tj. nije pukao), a false u suprotnom. Posljednje dvije metode služe za rad sa švaljama (koje krpe rance), što će biti detaljnije objašnjeno. Iz klase Ranac izvesti (neapstraktne) klase Transalp, Odyssee i Contour, bez novih metoda, sa kapacitetima i nosivošću od 90 lit/30 kg, 50 lit/20 kg i 30 lit/12kg respektivno.
Za klasu ranac napisati „fabriku“ (koristeći Factory šablon), sa statičkom metodom:
Ranac& noviRanac(string tip)
Tip ranca može biti „mali“, „srednji“ ili „veliki“; metoda vraća novu instancu Ranca odgovarajućeg tipa: Contour za mali, Odyssee za srednji i Transalp za veliki.
U svrhu simuliranja tereta, napisati apstraktnu klasu Teret sa interfejsom:
string naziv()
float tezina()
float zapremina()
Iz nje izvesti (neapstraktne) klase Odjeca, Hrana i Posudje.
Konačno, napisati i klase Posmatrac, i iz nje izvedenu klasu Svalja. Posmatrači posmatraju rance (po Observer šablonu), i imaju metodu:
void promjena(Ranac* r, string tip)
Švalje reaguju samo na promjene tipa „pucanje“. Kao odgovor na pucanje, švalje krpe odgovarajući ranac. Svaka švalja ima svoje ime.
Trebaju mi ideje i uputstva kako da rijesim nesto sam poceo ali mislim da nisam na dobrom putu. Treba mi pomoc kako da napravim apstraktnu klasu Ranac i iz nje da izvedem ove druge i tako to...
Napisati C++ kod koji simulira korišćenje ranaca. Svaki ranac ima određen zapreminski kapacitet, izražen u litrama, kao i nosivost, izraženu u kilogramima. U ranac se može ubaciti razni teret, koji ima svoju zapreminu i težinu. U svakom trenutku moguće je saznati koliko je prostora ostalo slobodno u rancu, ali ne i kolika je preostala nosivost ranca. Ukoliko se u ranac ubaci više kilograma nego što je njegova nosivost, ranac će da pukne i potrebno ga je zašiti.
Napisati apstraktnu klasu Ranac, sa javnim metodama:
float kapacitet()
float slobodno()
void ubaci(Teret& t)
void sadrzaj()
bool citav()
void registrujPosmatraca(Posmatrac& p)
void zakrpi()
Prve dvije metode vraćaju ukupni i preostali (zapreminski) kapacitet ranca. Treća ubacuje neki teret u ranac. Ukoliko se pokuša ubaciti teret čija je zapremina veća od preostale slobodne zapremine ranca, metoda treba da baci izuzetak tipa PrekoracenjeKapaciteta (tu klasu treba izvesti iz klase exception). Međutim, ukoliko dođe do prekoračenja nosivosti ranca, dolazi do pucanja ranca i potrebno ga je zakrpiti (na kasnije opisan način). Četvrta metoda na ekran ispisuje kompletan sadržaj ranca (za svaki komad tereta se ispisuje njegov naziv). Peta vraća true ukoliko je ranac još uvijek čitav (tj. nije pukao), a false u suprotnom. Posljednje dvije metode služe za rad sa švaljama (koje krpe rance), što će biti detaljnije objašnjeno. Iz klase Ranac izvesti (neapstraktne) klase Transalp, Odyssee i Contour, bez novih metoda, sa kapacitetima i nosivošću od 90 lit/30 kg, 50 lit/20 kg i 30 lit/12kg respektivno.
Za klasu ranac napisati „fabriku“ (koristeći Factory šablon), sa statičkom metodom:
Ranac& noviRanac(string tip)
Tip ranca može biti „mali“, „srednji“ ili „veliki“; metoda vraća novu instancu Ranca odgovarajućeg tipa: Contour za mali, Odyssee za srednji i Transalp za veliki.
U svrhu simuliranja tereta, napisati apstraktnu klasu Teret sa interfejsom:
string naziv()
float tezina()
float zapremina()
Iz nje izvesti (neapstraktne) klase Odjeca, Hrana i Posudje.
Konačno, napisati i klase Posmatrac, i iz nje izvedenu klasu Svalja. Posmatrači posmatraju rance (po Observer šablonu), i imaju metodu:
void promjena(Ranac* r, string tip)
Švalje reaguju samo na promjene tipa „pucanje“. Kao odgovor na pucanje, švalje krpe odgovarajući ranac. Svaka švalja ima svoje ime.
Trebaju mi ideje i uputstva kako da rijesim nesto sam poceo ali mislim da nisam na dobrom putu. Treba mi pomoc kako da napravim apstraktnu klasu Ranac i iz nje da izvedem ove druge i tako to...