public static interface GRobot.VlastnýTvar
GRobot.vlastnýTvar(VlastnýTvar)
…
Príklad:
public
class
GKruhextends
GRobot
{// Statická inštancia kreslenia vlastného tvaru – statickosť znamená, že
// bude vytvorený jediný objekt pre všetky inštancie triedy GKruh (pozri
// hlavnú metódu nižšie).
public
static
VlastnýTvar tvarKruhu =new
VlastnýTvar() {public
void
kresli
(GRobot
r) {// Vlastné kreslenie:
r.kruh
(); } };// Konštruktor
private
GKruh() {// Všetky objekty budú mať spoločné kreslenie vlastného tvaru, ktoré
// však bude prispôsobované podľa individuálnych vlastností robotov:
vlastnýTvar
(tvarKruhu); }// Hlavná metóda
public
static
void
main(String[] args) {// Vytvoríme tri objekty typu GKruh:
GKruh gKruh1 =new
GKruh(); GKruh gKruh2 =new
GKruh(); GKruh gKruh3 =new
GKruh();// Každý umiestnime na náhodnú pozíciu:
gKruh1.náhodnáPoloha
(); gKruh2.náhodnáPoloha
(); gKruh3.náhodnáPoloha
();// Zmeníme mu náhodú farbu:
gKruh1.náhodnáFarba
(); gKruh2.náhodnáFarba
(); gKruh3.náhodnáFarba
();// A určíme mu náhodnú veľkosť v rozmedzí 10 – 30:
gKruh1.veľkosť
(Svet
.náhodnéReálneČíslo
(10
,30
)); gKruh2.veľkosť
(Svet
.náhodnéReálneČíslo
(10
,30
)); gKruh3.veľkosť
(Svet
.náhodnéReálneČíslo
(10
,30
)); } }
Použitie rozhrania môže vyzerať komplikovane, preto bolo
robotovi umožnené zmeniť tvar aj (z hľadiska začínajúceho
programátora) jednoduchším spôsobom. Metódou GRobot
.
kresliTvar
()
(myslíme tým jej prekrytím). Z vnútorného (technického)
hľadiska je však činnosť spomínanej metódy zabezpečovaná
komplikovanejším mechanizmom s mierne vyššími režijnými
nákladmi na vykonávanie, preto skúsenejším programátorom
odporúčame využitie tohto rozhrania.
GRobot.vlastnýTvar(VlastnýTvar)
Modifikátor a typ | Metóda a opis |
---|---|
void |
kresli(GRobot r)
Jediná metóda rozhrania určená na kreslenie vlastných
tvarov robota.
|
void kresli(GRobot r)
GRobot
, teda objekt (inštanciu) robota, ktorý má slúžiť
na kreslenie vlastného tvaru. Kreslenie má byť čo
najjednoduchšie a malo by využívať len metódy kreslenia
objektu „r“ prijatého v argumente tejto metódy.
Príklad:
vlastnýTvar
(new
VlastnýTvar
() {public
void
kresli
(GRobot
r) {// Kružnica s „nosom“
r.farba
(r.modrá); r.kružnica
(10
); r.dopredu
(20
); } });
Poznámka: Niektoré metódy upravujú v rámci
vlastného kreslenia svoje správanie, napríklad skupina
metód domov
vráti a otočí robota do
aktuálnej pozície a smeru (polohy a smeru v čase začatia
vlastného kreslenia) bez ohľadu na to, kde je v skutočnosti
definovaný domov robota. Metódy uhol
,
smer
, uholDoma
a smerDoma
vracajú
hodnotu upravenú o aktuálne pootočenie tvaru (pozri metódu
pootočenieTvaru
).
r
– objekt robota použitý na nakreslenie vlastného
tvaru; je to ten objekt, ktorý požaduje vlastné
kreslenie tvaru (hodnoty kľúčových vlastností ako
poloha, smer, stav pera,a pod., sú pred začatím
kreslenia vlastného tvaru zálohované a po skončení
kreslenia sú vrátené do pôvodného stavu; pero robota
je pri začatí vlastného kreslenia vždy položené bez
ohľadu na skutočný stav)