Állatok versenye 2.

Vészesen közeleg az állatverseny időpontja, és a megrendelő most jött rá, hogy módosítani kellene a programunkat (a megrendelők már csak ilyenek J)

Hiába dugjuk az orra alá az eredeti kérését, még­pedig ezt:

„Az állatmenhely alapítvány március közepén kisállat-versenyt rendez. Mindegyik állat regisztrálásakor meg kell adni az állat nevét és a születési évét. Ezek a verseny során nyilván nem változhatnak. Mindegyikőjüket pontozzák, pontot kapnak a szépségükre és a viselkedé­sükre is. A pontszám meghatározásakor figyelembe veszik a korukat is (csak év): egy egységesen érvényes maximális kor fölött 0 pontot kapnak, alatta pedig az életkor arányában veszik figyelembe a szépségre és a viselkedésre adott pontokat. Minél fiatalabb, annál inkább a szépsége számít, és minél idősebb, annál inkább a viselkedése. (Ha pl. 10 év a maximális kor, akkor egy 2 éves állat pontszáma: (10-2)*a szépségére adott pontok + 2* a viselkedésére kapott pontok.)”

ő közli, hogy bocsánat, tévedett, és kéri a módosítást. Kiderült ugyanis, hogy a versenyen kutyák és macskák vesznek részt, nem teljesen egyforma feltételekkel. A regisztrációra és a pontozásra való előírás nagyjából marad, de ezeket a módosításokat kéri:

Kutyák esetén a gazdához való viszonyt is pontozzák. Ez hozzáadódik a szépségért és viselkedésért kapott pontokhoz, de ezt a viszony-pontot a verseny előtt adja a zsűri. Ha nincs viszony-pontja, akkor a végső pontszáma nulla lesz.

Mivel kutyák és macskák együtt szerepelnek, ezért csak olyan macskák versenyezhetnek, akiknek van macskaszállító dobozuk. A doboz létét már a regisztráció során be kell jelenteni, de a verseny pillanatáig módosítható. Ha a verseny pillanatában nincs ilyen doboz, akkor az ő végső pontszáma is nulla lesz.

Bár a megrendelő csak ennyit mondott, de azért figyelmeztessük rá, hogy így nem lehet egyértelműen azonosítani az állatokat, hiszen miért ne lehetne köztük két azonos nevű. Most állapodjunk meg abban, hogy mindegyikőjük kap majd egy rajtszámot, mégpedig a regisztrá­lás sorrendjének megfelelő értéket.)

A toString() metódusban adjuk meg azt is, hogy az illető állat kutya-e vagy macska.

1. Először próbáljuk ki az elkészült osztályokat két konkrét példányra.

2. Utána kapcsolja össze a feladatot a korábban tanultakkal, azaz regisztráljon valahány állatot (vegyesen kutyákat és macskákat), majd versenyeztesse őket (legegyszerűbb, ha véletlen pontokat ad). A regisztráció után is és a verseny után is írassa ki az adataikat. Az adatokat az allatok.txt fájlból olvassa. (Fájlszerkezet: állat_neve;szül.éve, és ha macska, akkor utolsó adatként az, hogy van-e doboza (true vagy false).)


Adatok: allatok.txt


A feladat megoldása előtt, illetve közben célszerű átnézni a következő fogalmakat:

öröklődés, absztrakt osztály, fájlból való olvasás, kivételkezelés, jUnit teszt - ezekhez pl. itt találhat referenciákat:

http://java.progtanulo.hu/

https://docs.oracle.com/javase/10/

http://www.theorphys.elte.hu/fizinf/HaloAdat/tananyag/java/4_OBJEKTUM2/index.html

http://www.tutorialspoint.com/java/java_files_io.htm (most ennél kevesebb is elég)

https://www.tutorialspoint.com/java/java_exceptions.htm

http://tutorials.jenkov.com/java-exception-handling/index.html

http://tutorials.jenkov.com/java-unit-testing/index.html


de persze bármely más, a témával foglalkozó anyag is jó lehet.


Egy lehetséges megoldás olvasható a következő pdf fájlban. Próbálja meg megérteni és megoldani a leírtak alapján.

allatverseny2.pdf