Abstract
Cílem tohoto testu je ověřit znalosti principů a užití dědičnosti a rozhraní.
Table of Contents
Vytvořte rozhraní cz.muni.fi.pb162.test2.Engine
,
která bude reprezentovat nějaký stroj. Rozhraní bude mít metodu
getPower()
vracející výkon stroje ve wattech jako
číslo s pohyblivou řádovou čárkou.
Vytvořte abstraktní třídu
cz.muni.fi.pb162.test2.AbstractEngine
,
která bude implementovat rozhraní
cz.muni.fi.pb162.test2.Engine
.
Třída bude mít atribut
power
typu double, který bude obsahovat výkon stroje.
Dále bude mít chráněný konstruktor
s parametrem obsahujícím výkon stroje a metodu
getPower()
vracející tuto hodnotu.
Vytvořte rozhranícz.muni.fi.pb162.test2.Locomotive
,
která bude reprezentovat lokomotivu a která bude rozšiřovat rozhraní
cz.muni.fi.pb162.test2.Engine
. Rozhraní bude obsahovat
metodu getTraction(), která vrátí druh trakce lokomotivy jako řetězec
("electric"/"diesel").
Vytvořte třídu cz.muni.fi.pb162.test2.ElectricMotor
,
která bude reprezentovat elektrický motor a která bude potomkem třídy
cz.muni.fi.pb162.test2.AbstractEngine
.
Třída bude mít atribut
type
typu String
.
Dále bude mít konstruktor s
dvěma parametry, obsahujícími typ motoru a jeho výkon ve Wattech, metodu
getPower()
vracející výkon ve Wattech
a metodu toString()
, která vrátí řetězec ve tvaru
"ElectricMotor(type = <type>, power = <power> kW)".
Vytvořte třídu cz.muni.fi.pb162.test2.ElectricLocomotive
,
která bude reprezentovat elektrickou lokomotivu s uspořádáním pojezdu typu Bo'Bo' (to mimo jiné znamená, že má čtyři
trakční motory). Třída bude implementovat rozhraní
cz.muni.fi.pb162.test2.Locomotive
a
bude mít jeden atribut type
typu
String
a čtyři atributy
motor1
až motor4
typu
ElectricMotor
.
Dále bude mít konstruktor s pěti parametry, obsahujícími inicializační
hodnoty těchto atributů, a metodu getPower()
, která celkový
výkon lokomotivy. Dále doplňte metodu toString()
,
která vrátí řetězec ve tvaru "Locomotive (type = <type>, power = <power> kW)
[ElectricMotor(type = <type>, power = <power> kW),
ElectricMotor(type = <type>, power = <power> kW),
ElectricMotor(type = <type>, power = <power> kW),
ElectricMotor(type = <type>, power = <power> kW)]".
Nakonec vytvořte třídu
cz.muni.fi.pb162.test2.DeiselLocomotive
,
která bude reprezentovat dieselovou (případně diesel-elektrickou) lokomotivu.
Třída bude potomkem třídy cz.muni.fi.pb162.test2.AbstractEngine
a bude implementovat rozhraní cz.muni.fi.pb162.test2.Locomotive
.
Třída bude mít atribut
type
typu String
.
Dále bude mít konstruktor s
dvěma parametry, obsahujícími typ lokomotivy a její výkon ve Wattech, metodu
getPower()
vracející výkon ve Wattech
a metodu toString()
, která vrátí řetězec ve tvaru
"DeiselLocomotive(type = <type>, power = <power> kW)".