Ballai Brigitta XG3077 gittacska91@gmail.com 2013.11.25. Dokumentáció 1. Beadandó feladat Feladat : A feladat egy kellően bonyolult osztálystruktúra megtervezése és implementálása Java nyelven. Minimális követelmények: Legalább 7 osztály vagy interfész. A program tartalmazzon származtatást, a származtatott osztályok objektumai legyenek polimorfikusan használva. A program tartalmazzon absztrakt osztályt vagy interfészt. A kódolási konvenciók betartása: az osztálynevek nagybetűvel, a metódusés változónevek kisbetűvel kezdődjenek, a formázás átlátható legyen, egy forrásfájlban egy osztálydefiníció legyen, stb... Az osztálystruktúrán kívül legyen egy tesztprogram (teszt osztály), ami "csinál valamit" (objektumokat példányosít, meghívja függvényeiket, állapotukról adatokat ír ki a standard outputra) a feladat témájának megfelelően. A legfontosabb: a modell funkcionalitása legyen logikailag jól széttagolva az osztályok és azok függvényei között. Nem elfogadható, ha az osztályok csak adatokat tárolnak, és minden lényegi munkát egy osztály valamely függvénye(i) végez(nek) el. Téma : Vendéglátás Vendéglátás: étterem, személy, pincér, vendég, szakács, áru, ital, étel. Létrehoz egy éttermet, és a bevételt méri néhány napot szimulálva. A vendégek elégedettségét befolyásolja az áruk minősége, és a kiszolgálás. Ha nem elégedettek, kevésbé valószínű, hogy visszamennek másnap az étterembe.
A programom összesen 4 csomagot tartalmaz, ezek közül a main, vagyis a főprogram az egyik. - main - ember - termek - hely ember Az ember-en belül létrehoztam a Személy fájlt, amiből származtatjuk a Vendéget és a Dolgozót. A Dolgozóból származtatjuk a Szakácsot és a Pincért. A Személy egyetlenegy adattagot tartalmaz, a nevet, mert csak ez a közös a három személyben. A Vendég létrehozásakor a konstruktora megkapja a nevét és a pénzmennyiségét, amennyit magával visz az étterembe. A pénzét le is kérdezhetjük vagy, ha elfogyott a pénze azt időközben újratölthetjük. Van két olyan adattagja, ami az elégedettségét állítja be. Az egyik(elegedettseg) a szakács és a pincér alapján, a másik(kajaelegedettseg) az elfogyasztott étel, ital minősége alapján állítódik be. Van egy olyan metódusa, ami a fizetést teszi lehetővé. Itt állítódik be az elégedettsége is. A Dolgozó konstruktorában a nevét, a munkatapasztalatát és a fizetését lehet megadni, majd a teljesítmény is beállítódik a ledolgozott évek alapján. Továbbiakban a fizetést és a munkatapasztalatot le lehet kérdezni. A Dolgozóból származó Szakács konstruktorában a nevét, a munkatapasztalatát és a fizetését adjuk meg. A Dolgozóból származó Pincér konstruktora is ugyanígy állítódik be, csak kap egy kedvesség adattagot. Az utóbbi azt jelzi, hogy a vendéggel mennyire tud egy barátságos viszonyt kialakítani. A Pincérhez hozzárendelünk egy Szakácsot, akivel együtt dolgozik. termek Tartalmaz egy absztrakt Aru osztályt, amiből származtatjuk az Italt és az Ételt. Az Áru rendelkezik a közös adattagokkal, a névvel, a beszerzési árral, az eladási árral és a minőségével. Ezeket az Áru létrehozásakor be is kell állítani. A mennyiség beállítása és lekérdezése absztrakt, mivel ezeket az étel és az ital esetén is másképp kell definiálni. Az Áru összes adattagját le lehet kérdezni. Az Etel az Aru ból származik. Az Áruból kapott adattagok mellett az adagot is meg kell adni. Itt a mennyiség beállítását és a lekérdezését felül kell definiálni, mert a mennyiséget adagba mérjük és egy étkezéshez egy adagot rendelünk. Az Ital is ezen a módon alakul, csak ott a mennyiség dl-ben mérődik és egy étkezésnél 2 dl üdítőt töltünk ki a vendégnek.
hely Ebben az Etterem osztály található, ami felhasználja termék és a személy osztályban található fájlokat. Ezt az elején az importálással jelezzük. Egy étterem létrehozásánál megkapja, hogy mennyi a befogadóképessége, meg mennyi az induló tőkéje. Továbbá beállítódik 4 tömb, amiben a vendégeket, a dolgozókat, az italokat és az ételeket tároljuk. A férőhely és a kassza lekérdezhető, de nem állítható. Rendelkezik egy olyan metódussal, amivel árut tudunk vásárolni. Megvizsgálja, hogy az adott áru ital vagy étel és ez alapján kiszámoljuk, hogy mennyibe kerül. Ha a kasszában van annyi pénzünk, akkor megvesszük és belerakjuk a neki megfelelő tömbbe. Van egy külön metódus arra, ha dolgozót felveszünk, ilyenkor a dolgozót a dolgozok tömbbe tároljuk el. Amikor a vendég eszik, akkor ennek a függvénynek az aktuális vendéget és a vendég rendelését adjuk meg paraméterül. Vizsgálatra kerül, hogy van-e hely az étteremben. Ha van, akkor megnézzük, hogy ez a vendég volt-e már az étteremben és hogy elégedett volt-e. Ha még nem volt az étteremben az elégedettsége 5-ről indul, mert az elején tetszik neki a hely. Ha volt már és az elégedettsége legalább 3, akkor beültetjük az étterembe, mint visszajáró vendéget, a programkódban hozzáadjuk a vendégek tömbjéhez. Megvizsgáljuk, hogy van-e az adott italból, ételből. Ha nincsen, akkor töröljük őket a nekik megfelelő tömbökből, de ha van, akkor leveszünk belőle megfelelő mennyiséget. A kassza pénzét növeljük az eladási árral számolva és a vendég pénzét csökkentjük. Itt feltételezzük, hogy a vendég, ha jön az étteremben, rendelkezik a megfelelő pénzmennyiséggel. Ha a vendég eltávozik, akkor a vendegmegy függvényt hívjuk meg átadva neki a megfelelő vendéget. Ezzel törlődik a vendegek tömbből. Ha ezt nem adjuk ki, akkor a bezár függvénynél, biztosítjuk, hogy az étterem kiürüljön a zárásra. Itt ha a vendégek tömbben van még elem, akkor törlésre kerül. A napi zárás metódusban az étterem dolgozóit fizetjük ki. main Létrehozunk egy éttermet egy bizonyos tőkével és férőhellyel. Ezután létrehozzuk a Szakácsokat és a Pincéreket, majd felvesszük őket. A Pincérekhez hozzárendeljük a Szakácsokat, akikkel fognak dolgozni. Létrehozzuk a vendégeket és az italokat, ételeket. Amikor elkezdődik az első nap, akkor megvásároljuk az árukat az étterem raktárába. Jönnek a vendégek, esznek, majd fizetnek és távoznak. Minden nap végén kiíratjuk a kasszában lévő pénzt. A program futása során kiíratom a vendégek elégedettségét és lehet látni, hogy lesz egy vendég, akinek 2-es lesz
ez az értéke és marad is, nem javul, ami azt jeleni, hogy ő már nem jár az étteremben. Lehet látni, hogy némelyik nap egy két vendégnek javul az elégedettsége annak köszönhetően, hogy jó pincér szolgálta fel és jó minőségű ételt kapott. A kassza alapján lehet látni, hogy egy vendég elvesztése után is nagyon jövedelmező az étterem, mivel több pénz van benne az ötödik nap végére, mint ahogy indult az étterem. A példaprogram 5 napon keresztül követi az étterem változását. Példaprogram :
Osztálydiagram : csomagok Etterem
Aru Szemely