CV04 - Zadání - 3
Zadání úlohy na cvičení. rozhraní, dědičnost
Rozhraní DrawableSimulable
Z vašeho projektu z minulého cvičení nebo z projektu s řešením minulého cvičení (https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab04v3.git)
Vytvořte společné rozhraní (interface ) DrawableSimulable, které umožňuje stejný přístup k objektům tříd Boat, LochNess, Background, Rock z objektu lab.Scene - zvažte skutečnost, že je na ně volána metoda draw a simulate.
Rozhraní Collisionable
Zaveďte interface Collisionable:
- getBoundingBox(): Rectangle2D
- intersect(another: Rectangle2D): Boolean
- hitBy(another: Collisionable)
a testujte všechny objekty tohoto typu zda jsou v kolizi s někým jiným. Objekt třídy Boat bude posunut nahoru nebo dolů v případě kolize s LochNess a ta změní směr pohybu na opačnou stranu.
Objekt třídy Boat se může posouvat i plynule, tak že mu nastavíte nějakou rychlost a tu v simulaci postupně snižujete.
Abstraktní třída WorldEntity
Vytvořte novou abstraktní třídu WorldEntity, která bude společný předek pro všechny třídy, které jsou DrawableSimulable. Bude obsahovat strukturu a chování související s pozicí a "šablonovou" metodu draw (viz níže).
Použitá metoda drawInternal bude abstraktní.
@Override
public final void draw(GraphicsContext gc) {
gc.save();
drawInternal(gc);
gc.restore();
}
Odevzdání
Řešení odevzdejte do systému Kelvin jako úlohu "Java 1 - 4. cvičení v3". Do systému nahrejde celý obsah složky src a soubor pom.xml. Postupujte dle videa na DU02 k odevzdání v době 3. cvičení.
Následně bude projekt zkompilován a provedou se Unit Testy. Vzhledem k povaze projektu a prozatímnímu testovacímu využití systému Kelvin v předmětu Java 1 v případě selhání nezoufejte.
Jedná se o pomocný test, vše bude ještě hodnoceno ručně. Důležité je nahrát soubory aby bylo možno vše vyhodnotit a provést analýzu na plagiáty. Věřím, že je to je formalita a všichni z Vás tvoří vlastní kód.
Řešení
Řešení zadání najdete v gitu ve větvi solution ...