Írj egy kávéfőzőt modellező programot.
- A kávéfőző a következő metódusokkal rendelkezzen:
- feltolt( mivel, mennyit )
- kiurit( mit )
- foz()
- A kávéfőzőbe maximum 10 adag vizet, és 6 adag kávét lehet tölteni. Vizet bármikor utánatölthetsz, kávét csak akkor, ha nem használt.
- A kávéfőzőből ki lehessen üríteni a használt kávét.
- A kávéfőzőt fel lehessen tölteni vízzel és kávéval a kapacitásnak megfelelően
- A feltöltött kávéfőzővel lehessen kávét főzni. A főzéskor mindig annyi vizet használ fel, ahány adag kávé van benne
- A kávéfőző rendelkezzen egy edénnyel, ami főzéskor a kész kávét tárolja. Főzéskor írd ki, hány adag kávét főztél.
- Az edény a következő metódusokkal rendelkezzen:
- kostol() – megadja, hogy milyen kávé van benne. Ha főzéskor a víz kevesebb, mint amennyi adag kávé van benne, a lefőtt kávé legyen túl erős. Ha a kávé használt volt, akkor a kávé legyen pocsék.
- kiont() – kiönti a kész kávét
- Ha az edényt nem üríted ki, akkor a benne lévő jó kávét el tudja rontani az esetlegesen “ráfőzött” rossz, vagyis ha nem ürítetted ki a használt kávét, vagy túl kevés vízzel főzted, valamint a kész kávé mennyisége is legyen több. Ha jó kávéra jót főztél, akkor az edényben is jó marad a kávé, csak a mennyisége legyen több.
- A kávéfőzőre rá lehessen nézni, ilyenkor írd ki, hogy mivel és mennyire van feltöltve, használt kávé van-e benne, valamit éppen milyen és mennyi kávé van az edényben.
- A vezérlőprogramban metódus hívásokkal üzemeltesd a kávéfőzőt.
kv.feltolt(“kave”,5);
kv.feltolt(“kave”,3);
kv.feltolt(“viz”,10);
kv.feltolt(“viz”,2);
kv.foz();
kv.foz();
kv.nez();
edeny.kostol();
edeny.kiont();
kv.nez();
stb… - Megfelelő hibakezeléssel biztosítsd, hogy ne fordulhassanak elő hibák. A hibákről szöveges üzenetet is írj ki:
- negatív vízmennyiség
- túltöltés (csak akkor tölthess bele, ha belefér)
- üresen főzni
- edényből kétszer kiöntés, stb.
Kérem küldje el ennek a feladatnak a megoldását ,amennyiben készen van.
Köszönöm
Megnézem, kéznél most nincs, ha lesz egy kis időm, megírom.
Köszönöm
Sikerült eljutni a 7.feladatig.Az nem világos hogy az edénynek egy új osztályt kell e létrehozni?
Valamint hogy ennek az új osztálynak hogyan adom át a számított értékeket pl vízszint.
Természetesen kell új edény, a feladat is azt mondja, hogy rendelkezzen egy edénnyel. Az edény tárolja majd változóban, hogy mennyi kávé van benne, és az milyen minőségű.
Amikor a gépben lévő kávéporból és a vízből lefő a kávé, akkor az edénynek valamilyen metóduson keresztül át kell adni, hogy mennyiségileg mennyi főtt le, valamint a gépben lévő főzést vezérlő metódusnak el is kell döntenie, hogy a lefőtt kávé milyen minőségű legyen. A főző metódus adja az edénynek adja át a kész kávét és annak minőségét tartalmazó változókat.
Az edény objektuma, amit az edény osztályból kell létrehozni pedig a gépben tárolandó, mert tudnia kell a gépnek, hogy melyik edény van benne, és az mit tartalmaz.
Ez a része nekem is meghaladja a képességeimet.
Hiába állítok mindent publicra (osztályt, változót), a Kavefozo osztály változóit nem látja az Edeny osztaly. Mit hagytam ki? Alapból nem értem az egészet, hogy miért nem működik az access modifier. Egyazon package-ban lévő 2 osztály (akár public, akár default), nem látja egymás változóit.
Hali
Rájöttem a megoldásra. Bár én fordítva csináltam, mint ahogy itt az utolsó postban írtad. Nem a kávéfőzőben példányosítottam az edényt, hanem az edényben a kávéfőzőt.
Ráadásul ez így még nem működik (jól), ha közvetlenül az osztálypéldányon hívom meg a metódusokat (pl. kavefozo.foz();), mert az edény osztály még getterrel sem látja a kávéfőző osztály változóit. A lényeg, hogy a main()-ben az Edeny osztályban példányosított Kavefozo objektumpéldányon hívom meg a Kavefozo metódusait.
(pl. edeny.kavefozo.feltolt(kave, 6);)
Lehet, hogy túlkomplikáltam?