A teljes feladat során el kell készítenetek hat osztályt: egyet a járművek közös ősének (zh.Vehicle
),
egyet a motork kezelésére (zh.Motor
), egyet az autók kezelésére (zh.Car
),
egyet a garázsok jellemzésére (zh.Garage
), egyet a járművek szöveggé alakítására / szöveggből
visszaolvasására (zh.Builder
), egyet a járművek mentésére / betöltésére (zh.VhecileIO
).
A feladatban szereplő járműveknek van márkája és kerékszáma. Két jármű akkor egyenlő, ha azons típusúak, és a márkájuk is megegyezik.
A feladatban szereplő garázsokhoz lehet járművet hozzáadni, járművet eltávolítani, meg lehet róla tudni, hogy ott parkol-e egy bizonyos jármű, hogy mennyi az összes hely, mennyi a szabad hely, mennyi a foglalt hely, és el lehet kérni a bent parkoló járművek listáját.
Segítségül le lehet tölteni a vehiclezh.zip file-t, mely teszteket tartalmaz a lehető legprecízebb 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.
Implementáld a zh.Vehcile
absztrakt osztályt, valamint a zh.Motor
, zh.Car
leszármazott osztályokat.
A feladat elkészítsében a test.VehicleTest
lehet a segítségedre.
zh.Vehcile
publikus felülete: Vehicle(int)
Konstruktor, beállítja a jármű kerekeinek számát. A jermű kerekeit a tires
nevezetű változó tárolja, melynek erteket csak egyszer lehessen beállítani.
int getTires()
Visszatér a jármű kerekeinek számával
String getBrand()
Visszatér a jármű márkájával.
boolean equals(Object)
Megvizsgálja, hogy a paraméterül kapott objektum egyenlő-e ezzel a járművel.
zh.Motor
publikus felülete: Motor(String)
Konstruktor, beállítja a jármű márkáját. A motornak 2 kereke van.
zh.Car
publikus felülete: Car(String)
Konstruktor, beállítja a jármű márkáját. Az autónak 4 kereke van.
Implementáld a zh.Garage
osztályt. A feladat elkészítésében a test.GarageTest
lehet a segítségedre.
Garage(int)
Kinstruktor. Létrehozz a garázst, melynek kapacitása a megadott paraméter lesz
int getCapacity()
Megmondja, mennyi a garázs kapacitása.
int getTakenPlace()
Megmondja, összesen mennyi helyet foglalnak a bent lévő jráművek. (Minden autó 4, minden motor 2 helyet foglal.)
int getFreePlace()
Megmondja, hány szabad hely van még a garázsban.
void add(Vehicle)
Leparkolja a járművet a garázsban, ha van még neki hely, egyébként hatástalan.
void remove(Vehicle)
Kiáll a járművel a garázsból.
boolean isParkingHere(SpaceShip)
true, ha a parméter itt parkol, flase
egyébként.
List<Vehicle> getVehicles()
Visszaadja az össze jármű listáját.
Implementáld a zh.Builder
osztályt. A feladat elkészítésében a test.BuilderTest
lehet a segítségedre.
static String fromVehicle(Vehicle)
A járművet egy *márka*:*típus* alakú szöveggé alakítja.
zh.Motor
típusa: motor
zh.Car
típusa: car
static Vehicle fromString(String)
A paraméterből előállít egy járművet.
IllegalArgumentException-t dob.
- Ha a pareméter első tagja üres String, akkor
IllegalArgumentException-t dob.
- Ha a pareméter második tagja nem
motor
vagy car
, akkor IllegalArgumentException-t dob.
- Ha a paraméter *márka*:*típus* alakú szöveg, akkor visszadja a *márka* márkájú, ha a típus
motor
, akkor zh.Motor
, ha car
akkor zh.Car
típusú jráművet.
Implementáld a zh.VehicleIO
osztályt. A feladt elékszítésében a test.IOTest
lehet a segítségedre.
static void save(String, List<Vehicle>) throws FileNotFoundException
Az első paraméter azon
file neve, melybe lementi a második paraméterként kapott lista elemeit. A kiment tulajdonságai:
zh.Motor
típusa: motor
zh.Car
típusa: car
static List<Vehicle> load(String) throws IOException
A paraéterül kapott filenév által jelölt
file-t megnyitja, és kiolvassa a benne lévő járműveket. A file tulajdonságai:
zh.Motor
típusa: motor
zh.Car
típusa: car