Písemka číslo 2 Lokomotiva Petr Adámek Abstract Cílem tohoto testu je ověřit znalosti principů a užití dědičnosti a rozhraní. _________________________________________________________________ Table of Contents Zadání Odevzdání písemky Zadání 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 = , 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 = , power = kW) [ElectricMotor(type = , power = kW), ElectricMotor(type = , power = kW), ElectricMotor(type = , power = kW), ElectricMotor(type = , 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 = , power = kW)". Odevzdání písemky Před odevzdáním písemky si zkontrolujte: 1. Zda jde Vaše řešení přeložit a zda jdou přeložit i všechny testy. Pokud řešení nebo testovací třídy nepůjdou přeložit, řešení se hodnotí nulovým počtem bodů! 2. Zdali všechny testy projdou bez chyby.