Szőlő Szüretelési Szimuláció
Beadási határidő: 2010. október 31. 23:59 (GMT+01:00)
A zárthelyinek erős előfeltétele az elfogadott beadandó.
|
|
Készíts egy
BetakaritoMunkas interfészt, amely metódusokat biztosít
- két BetakaritoMunkas összehasonlítására (a lassabbat adja vissza eredményül),
- a munkások párba állítására (erre get/set is kell),
- lekérdezhető egy munkás neve, óradíja és sebessége (kg/óra),
- valamint vizsgálható két munkás egyenlősége.
Az interfésznek legalább a fent leírtakat biztosítania kell, ám indokolt esetben további metódusai is lehetnek.
A
SzoloSzureteloMunkas osztály megvalósítja a
BetakaritoMunkas interfészt.
- Egy konstruktora van, amely rendre a munkás nevét, óradíját, sebességét (kg/óra) és az aszúszedés okozta lassulás mértéket (0 és 1 közötti szám) tartalmazza.
- Két SzoloSzureteloMunkas-t akkor tekintünk egyenlőnek, ha azonos a nevük (equals túlterhelése).
- A toString is felüldefiniálandó (lehetséges formátum például a "név - sebesség - óradíj").
- A SzoloSzureteloMunkas specialitása, hogy szeret párban dolgozni, ilyenkor 10%-kal gyorsabb. A párok nem cserélgethetőek, csak a még szabad munkások alkothatnak újabb párokat!
A
Szuret absztrakt osztályra jellemző adat
- a felvásárlási ár (kg/Ft)
- a termés mennyisége (kg/m2)
ezen adatok az
összes szüret esetén egységesek (csak beállító metódusaik vannak).
Az egyes
Szuret objektumokra jellemző adat ezeken kívül még
- a szüretelendő terület mérete,
- a szüretelők maximális, illetve aktuális létszáma (ez legyen lekérdezhető),
- valamint a szüreten részt vevő munkások tömbje.
Munkást akkor lehet felvenni a szüretelők közé, ha még van hely, illetve ha még nincs ilyen néven másik munkás (vagy akár ő maga), mivel a nevek keveredése félreértéseket okozhat a szüret megszervezésekor. Lehetőség van lekérdezni, hogy egy munkás (vagy azonos nevű társa) feljelentkezett-e már a szüretre, vagy sem. A szüreti esemény két legfontosabb eredménye a haszon, és a szüret időtartama. Ezen adatok minden specializált osztály esetében különbözően számolandóak.
A
SzoloSzuret osztály a
Szuret specializációja, ahol az osztályra jellemző adat az
aszú felvásárlási ára, amely tetszőlegesen módosítható. Két konstruktor tartozik a
SzoloSzuret osztályhoz:
- az egyik rendre a maximális létszámot, a területet, és az aszúsodás arányát (0 és 1 között) állítja be,
- a másik csak területet ad meg.
Ha mást nem mondunk, akkor az aszúsodás nem indult be (0.0), a szüretelők maximális létszáma pedig 20. Lehetőség van lekérdezni, hogy az adott szüreten lévő munkások közül ki a leglassabb.
A szüret időtartamát úgy számoljuk ki, hogy a szüretelendő terület méretét megszorozzuk a termés m
2-enkénti mennyiségével (teljes mennyiség), majd ezt osztjuk a munkások összesített sebességével.
A haszon képlete a következő: szőlő ára + aszú ára - munkások bére. A szőlő árát úgy kapjuk, hogy a teljes szőlőmennyiségből levonjuk az aszút, majd felszorozzuk a felvásárlási árral. Hasonlóan járunk el az aszú esetében is. A munkások bére a szüret időtartamából és a munkások óradíjából számolható.
A megoldások összes osztálya/interfésze kerüljön a
szuret nevű csomagba!
A megvalósítás során pontosan kövesd a feladat szövegét. A mellékelt példa főprogram és UML diagram is segítséget nyújt a metódusok elnevezésével és paramétereivel kapcsolatban. Az osztályok belső reprezentációját a lehető legjobban védd, tehát csak akkor engedj, és csak olyan hozzáférést, amelyre a feladat felszólít, vagy amit a példa főprogram használ.
A beadott megoldásodnak működnie kell a mellékelt főprogrammal, ám ez nem elégséges feltétele az elfogadásnak. Törekedj, hogy kódod általános és újrafelhasználható legyen. Ezen tulajdonságokat is értékelni fogjuk!