Űrhajók

A teljes feladat során el kell készítenetek négy osztályt: egyet az űrhajók jellemzésére (zh.SpaceShip), egyet az űrhajó rajok jellemzésére (zh.Squad), egyet az űrhajók szöveggé alakítására / szöveggből visszaolvasására (zh.Converter), egyet az űrhajók mentésére / betöltésére (zh.SpaceIO).

A feladatban szereplő űrhajóknak van neve és tűzereje. Két űrhajó akkor egyenlő, ha a nevük és a tűzerejük megegyezik. Az űrhajókat lehet fejleszteni, lekérdezni a nevüket, tűzerejüket, és két űrhajót össze lehet hasonlítani egymással.

A feladatban szereplő űrhajórajokhoz lehet űrhajót hozzáadni, űrhajót eltávolítani meg lehet róla tudni, hogy hozzá tartozik-e egy bizonyos hajó, hogy a raj hány lelket számlál, hogy mennyi az össz tűzereje, és le lehet kérni a tagjainak listáját úgy, hogy azok tűzerő szempontjából csökkenő sorrendben adják vissza a bennfoglalt űrajókat.

Segítségül le lehet tölteni a spacezh.zip file-t, mely teszteket tartalmaz a lehető leg teljeskörűbb megoldás elkészítéséhez. Azonban fontos megjegyeznünk, hogy a tesztek lefutása nem garncia a jegy megszerzésére, mivel csak olyan hibákra tudunk tesztet készíteni, ami eszünkbe jut. Sajnos az elmúlt ZH-k szomorú tapasztalata, hogy a hallgatók sokkal változatosabban képesek elrontani a forrás kódot, mint sem azt mi el tudnánk képzelni. Fontos észrevennünk, hogy a cél nem az, hogy megfeleljünk a teszteknek, hanem hogy helyesen implementáljuk a feladatot. Persze ha nem fut le a teszt, valószínűleg a megoldásunk sem jó, de ez a kapcsolat továbbra sem implikálja, hogy helyesen lefutó teszt esetén helyes a megoldásunk is.


a. feladt: Az űrhajó

Implementáld a zh.SpaceShip osztályt, mely implementálja a java.lang.Comparable<SpaceShip> interface-t. A feladat elkészítsében a test.ShipTest lehet a segítségedre

A publikus felület:


b. feladat: Az űrhajóraj

Implementáld a zh.Squad osztályt. A feladat elkészítésében a test.SquadTest lehet a segítségedre.

A publikus felület:


c. feladat: Az átlakító

Implementáld a zh.Converter osztályt. A feladat elkészítésében a test.ConverterTest lehet a segítségedre.

A publikus felület:


d. feladat: A file kezelő

Implementáld a zh.ShipIO osztályt. A feladt elékszítésében a test.IOTest lehet a segítségedre.

A publikus felület:

  • static void save(String, List<SpaceShip>) throws FileNotFoundException Az első paraméter azon file neve, melybe lementi a második paraméterként kapott lista elemeit. A kiment tulajdonságai:
    • Minde sorban csak egy hajó van.
    • Minden hajó *név*:*tűzerő* alakú
  • static List<SpaceShip> load(String) throws IOException A paraéterül kapott filenév által jelölt file-t megnyitja, és kiolvassa a benne lévő hajókat. A file tulajdonságai:
    • Minden sorban csak egy hajó van.
    • Minden hajó *név*:*tűzerő* alakú