Zadání závěrečné písemky předmětu PB162 - Programování v jazyce Java, 6.1.2004, 16.00
Vašim úkolem bude naprogramovat jednoduchý systém prodeje aut.
Program bude obsahovat tyto třídy:
- Prodejce
- ústřední třída celého programu.
Veřejné metody:
- TypAuta pridejTypAuta(String tovarniZnacka, double spotreba)
- prodejce vytvoří nový typ auta, zaregistruje si ho u sebe a vrátí ho.
- Auto prodejAuto(TypAuta typ, String barva, String spz, Clovek c)
- prodá člověku c auto daného typu, dané barvy a spz. Prodané auto vrátí jako návratovou hodnotu. Lze prodat jen auto, od kterého prodejce má aspoň jeden kus - a počet kusů se tím sníží.
- TypAuta najdiTypAuta(String tovarniZnacka)
- pokud prodejce má typ auta s danou tovární značkou, vrátí se tento typ (jinak null).
- TypAuta
- typ auta charakterizovaný tovární značkou (String), spotřebou (double) a počtem kusů (int) kolik jich prodejce má. Na základě typu auta lze vytvořit konkrétní kus (exemplář) auta - objekt třídy Auto.
Veřejné metody:
- void pridejKs(int kolik)
- přidá daný počet kusů tohoto typu.
- void odeberKs(int kolik)
- odebere daný počet kusů tohoto typu.
- int kolikMam()
- vrátí kolik kusů tohoto typu u prodejce je.
- Auto
- objekt typu Auto představuje konkrétní kus auta, nese informace o typu (TypAuta), barvě (String), spz (String) a majiteli (Clovek).
Veřejné metody:
- String toString()
- vrátí řetězcově reprezentované informace o autu - viz výpis výstupu programu níže.
- Clovek
- nese jméno a příjmení (obě typu String)
Veřejné metody:
- String toString()
- vrátí řetězcově reprezentované informace o člověku, tj. jméno, příjmení.
- NemamAutoException
- výjimka (typu nehlídané, běhové výjimky, tj. extends RuntimeException), nese typ auta (TypAuta), který prodejce neměl (a proto tato výjimka vznikla).
Veřejné metody:
- TypAuta typAuta()
- vrátí typ auta, kvůlu němuž výjimka vznikla.
- Demo
- je spouštěcí třída, kterou ponecháte v původní podobě dostupné zde. Měla by běžet s vámi napsanými třídami uvedenými výše.
Kromě uvedených metod může (nebo dokonce někdy musí) mít třídy i další (i veřejné) metody - např. konstruktory, metody toString(), aby výpisy informací o objektech byly lidsky čitelné,....
Vždy musí být napsány tak, aby Demo fungovalo.
Se správně napsanými třídami by Demo mělo poskytnout zhruba následující výstup (skutečná podoba závisí na tom, jak budou formátovány výstupy metod toString):
Petr zakoupil auta:
auto typu: Skoda Fabia(spotreba=6.5l/100km), barva: cervena, spz: 2B0 5632, majitel: Petr Hrubes
auto typu: Daewoo Matiz(spotreba=6.0l/100km), barva: modra, spz: 2B0 7777, majitel: Petr Hrubes
Kamil zakoupil auta:
auto typu: Skoda Octavia(spotreba=8.2l/100km), barva: seda, spz: 2B1 3333, majitel: Kamil Narozny
auto typu: Opel Zafira(spotreba=7.5l/100km), barva: stribrna, spz: 2B1 8888, majitel: Kamil Narozny
Prodejce nema auto Opel Zafira(spotreba=7.5l/100km)
Všechny třídy nechť jsou umístěny (podobně jako už je Demo) v balíku autoprodej.