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 = <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 motor1motor4 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)".

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.