Abstract
Cílem tohoto testu je ověřit znalosti principů a užití dědičnosti a rozhraní.
Table of Contents
Vytvořte abstraktní třídu
cz.muni.fi.pb162.test2.AbstractVehicle
,
která bude implementovat zadané rozhraní
cz.muni.fi.pb162.test2.Vehicle
.
Třída bude mít atribut
length
typu double, který bude obsahovat délku dopravního
prostředku. Dále bude mít chráněný konstruktor
s parametrem obsahujícím délku dopravního prostředku a metodu
getLength()
vracející tuto hodnotu.
Vytvořte třídu cz.muni.fi.pb162.test2.Locomotive
,
která bude reprezentovat lokomotivu a která bude potomkem třídy
cz.muni.fi.pb162.test2.AbstractVehicle
.
Bude mít konstruktor s jedním parametrem, obsahujícím
délku lokomotivy, a metodu toString()
, která vrátí
řetězec ve tvaru "Locomotive (length: <length>)".
Dále vytvořte třídu cz.muni.fi.pb162.test2.Carriage
,
která bude reprezentovat železniční vagón a která bude potomkem třídy
cz.muni.fi.pb162.test2.AbstractVehicle
.
Bude mít konstruktor s jedním parametrem, obsahujícím
délku vagónu, a metodu toString()
, která vrátí
řetězec ve tvaru "Carriage (length: <length>)".
Pokračujte vytvořením třídy
cz.muni.fi.pb162.test2.Train
,
která bude reprezentovat vlak a která bude implementovat rozhraní
cz.muni.fi.pb162.test2.Vehicle
.
Třída bude mít atribut locomotive
typu
Locomotive
, carriage
typu
Carriage
a carriagesCount
typu
int
. Třída bude mít konstruktor s třemi parametry,
obsahujícími inicializační hodnoty těchto atributů.
Metoda toString()
bude vracet řetězec ve tvaru
"Train (length: <length>) [Locomotive (length: <length>),
<carriagesCount> x Carriage (length: <length>)]".
Nakonec vytvořte třídu cz.muni.fi.pb162.test2.Main
,
která bude obsahovat statickou metodu
printInfo(Vehicle vehicle)
, která na standardní výstup
vypíše informace o zadaném vozidle.
Třída bude také obsahovat metodu main(String[])
, v níž
vytvoříte dvě mašinky a dva vagónky s různou délkou a složíte z nich
dva vláčky, které budou mít různý počet vagónků. Informace o obou mašinkách,
vagóncích i vláčcích vypíšete na standardní výstup pomocí metody
printInfo(Vehicle vehicle)
.