- Vytvořte jednoduchou objektovou hierarchii grafických objektů s násludující strukturou:
- GraphicalObject - rozhraní s metodami:
- setX(int x)/int getX() - nastaví/vrátí souřadnici X daného objektu
- setY(int y)/int getY() - nastaví/vrátí souřadnici Y daného objektu
- setColor(Color color)/Color getColor() nastaví/vrátí barvu objektu
- show() - vypíše aktuální informace o objektu
- hide() - skryje objekt
- move(int newX,int newY) - presune objekt na nove souradnice:
- AbstractPrimitive - abstraktni trida pro graficka primitiva, která implementuje GraphicalObject následovně
- atributy x,y, color, isVisible - viz příslušné metody get/set, atribut isVisible má implicitně hodnotu false
- metody get*/set* - slouží k získání/nastavení příslušných atributů
- metoda hide nastaví hodnotu atributu isVisible na false
- metod show nastaví hodnotu atributu isVisible na true
- metodu move následovně:
- skryje daný objekt
- změní jeho souřadnice
- znovuzobrazí daný objekt
- Překryje metodu ToString tak, že v případě, že je objekt viditelný vrátí řetězec: "[X, Y]".
- Point2D, Circle, Rectangle - potomci třídy AbstractPrimitive, kterépřekryjí metodu ToString tak, jak je popsáno níže
- Point2D si pamatuje název bodu (hodnota typu String) a implementuje metody následovně:
- ToString - v případě, že je objekt viditelný (hodnota atributu isVisible je true, tak vrátí název_bodu[X, Y], pokud je false tak vrátí řetězec "Neviditelný bod".
- Dále bude mít metodu setName(String)/String getName(), které budou sloužit k nastavení/získání názvu bodu.
- Circle si navíc bude pamatovat svůj poloměr (hodnota typu double) a implementuje chybějící metody následovně:
- getRadius/setRadius - slouží k získání/nastavení atributu pro poloměr
- ToString - v případě, že je kruh viditelný vrátí řetězec: "Kruh [X, Y] s poloměrem R.", pokud kruh viditelný není vrátí řetězec "Neviditelný kruh".
- Rectangle si navíc bude pamatova šířku a výšku (hodnoty typu double) a implementuje chybějící metody následovně:
- getWidth()/setWidth() - vrátí/nastaví šířku obdélníku
- getHeight()/setHeight() - vrátí/nastaví výšku obdélníku
- ToString - v případě, že je objekt viditelný vrátí řetězec: Obdélník [X, Y] s délkou Width a výškou Height, pokud není viditelný vrátí řetězec "Neviditelný obdélník".
- Dále implmentujte Třídu Main s metodou main, která:
- vytvoří pole grafických objektů, tak aby obsahovalo červený bod se souřadnicemi [10,10], zelený kruh se souřadnicemi [50, 50] a poloměrem 50 a modrý obdélník se souřadnicemi [100,150], délkou 100 a výškou 50.
- Výpíše informace o objektech.
- Zavolá na objektech metody show a vypíše informace o nich.
- Přesune objekty o náhodné hodnoty v osách X a Y.
- Znovu vypíše informace o objektech.
- Objekty skryje.
- Vypíše informace o objektech.