PB162: Úloha číslo 4
Doprava
Zadání úlohy
Úloha má za cíl procvičit používání rozhraní a dědičnosti.
- Stáhněte si zabalený podklad pro domácí úkol: doprava-zaklad.zip.
Najdete v něm některé třídy a rozhraní z požadované objektové hierarchie. Vaším úkolem je
dodělat ostatní třídy a program učinit funkčním. Není dovoleno jakkoliv dodané třídy měnit,
s výjimkou toho, že je z původních balíků doprava,
doprava.vozidla a doprava.sluzby
přesunete do vlastních balíků cz.muni.fi.{vas login}.doprava,
cz.muni.fi.{vas login}.doprava.vozidla a
cz.muni.fi.{vas login}.doprava.sluzby.
- Objektová hierarchie, kterou vytvoříte/doděláte, musí odpovídat následujícímu schématu.
Poznámka: Pro úplnost připomínám, že třídy Kolo a Vuz jsou bezprostředním
potomkem nejobecnější třídy Object,
proto je tato třída uvedena jako předek v hierarchii dědičnosti.
Třídy, hierarchie dědičnosti
Strom ukazuje hierarchii dědičnosti, v závorce u každé třídy jsou uvedena rozhraní, která daná
třída implementuje.
Balík doprava.vozidla
Object
|
+--Kolo (Umyvatelny)
|
+--Vuz (Opravitelny)
|
+--OsobniAuto (Osobni, MyckouUmyvatelny)
|
+--Nakladak (Nakladni, Umyvatelny)
Balík doprava.sluzby
Object
|
+--Hadice
|
+--Mycka
|
+--AutoServis
Platí, že třídy z balíku doprava.sluzby se odkazují na objekty, které dostanou
na zpracování, pouze pomocí typů rozhraní. Například AutoServis vždy pracuje pouze s
parametrem typu Opravitelny, nikoliv třeba Vuz nebo Kolo.
Ve zdrojovém archívu s kostrou úlohy (viz výše) je uvedeno několik již existujících
tříd. Obzvlašť třída Demo, která vás v podstatě přinutí naprogramovat celou
funkčnost domácího úkolu. Pro účely ladění doporučuji nejprve zakomentovat všechny
řádky její metody main(..) a postupně je odkomentovávat a doprogramovávat
chybějící funkčnost a objekty.
Pro upřesnění zde ještě uvádím několika metod, jejichž význam by nemusel být zřejmý
public void projedSe(int km);
Metoda se nachází ve třídě Kolo. Simuluje projížďku na kole v zadaném počtu kilometrů.
Simulace je realizována prostým výpisem informační hlášky na obrazovku.
Metoda zároveň zašpiní kolo - každých 50 km zvýší špinavost kola o 10%.
Dále zde uvádím hlavičku konstruktorů tříd Nakladak
a OsobniAuto (aby bylo jasné, co které hodnoty znamenají):
public Nakladak(String nazev, int uzitecneZatizeni)
public OsobniAuto(String nazev, int proPocetOsob)
Všechny metody po provedení vypíší na obrazovku krátkou informaci o tom, co provedly.
Také všechny třídy by měly obsahovat metodu public String toString(),
která sestaví informaci o objektu dané třídy. Tato informace se používá
na několika místech v Demu, ale doporučuji ji používat
i v ostatních třídách vašeho programu.