Projekt
Toto je posledné cvičenie pred termínom odovzdania spresnenia zadania projektu. Využite možnosť konzultovať. Pre začiatok práce na projekte platia inštrukcie z predchádzajúceho cvičenia.
Na zabezpečenie vstupu a výstupu vo svojom projekte môžete pripraviť grafické používateľské rozhranie (hoci len provizorné)
alebo využiť štandardný vstup a výstup, v čom vám môže pomôcť príklad načítania vstupu z konzoly.
Grafické používateľské rozhranie môžete implementovať pomocou rámcov JavaFX alebo Swing
(použitie iného rámca konzultujte s vyučujúcim na cvičeniach).
V každom prípade, dbajte na oddelenie vnútornej reprezentácie od používateľského rozhrania.
^
Úlohy
Namiesto riešenia úloh 1 a 2 môžete realizovať grafické používateľské rozhranie vo svojom vlastnom projekte.
Využite pritom aj návrhový vzor Observer podobne ako je využitý v hre s obrami a rytiermi.
Aby ste mohli používať JavaFX, musíte ho inštalovať. Pozrite návod na inštaláciu a použitie JavaFX v Eclipse.
Na počítačoch v CPU je JavaFX už inštalované, ale stále je potrebné, aby ste vykonali kroky uvedené v druhej časti návodu.
- Do okna na ovládanie hry s obrami a rytiermi z prednášky pridajte ďalšie tlačidlo, z ktoré bude slúžiť na vymazanie obsahu textového poľa v okne.
- Ešte od minulej prednášky v hre s obrami a rytiermi je implementovaný návrhový vzor Observer. Samotná trieda Game hrá rolu Subject, kým je rola Observer reprezentovaná rozhraním ClashFollower. Trieda EnergyOfWarriors je jediný implementovaný konkrétný Observer, ktorý sa prejavuje v okne hry. Vytvorte ďalšiu implementáciu roly Observer a zaraďte príslušný prvok do okna hry.
- Jedným zo spôsobov spracovania udalosti kliknutia na tlačidlo v hre s obrami a rytiermi bola použitie anonymnej triedy.
Anonymné triedy sú špeciálnym prípadom vnútorných tried.
Experimentujte s ďalšími, separátnymi príkladmi vnútorných tried, ktoré sú priložené k prednáške
(okrem jednej triedy ostatné typy sú bez modifikátorov prístupnosti a preto každý príklad môžete zadať do jedného súboru a tak ho aj preložiť):
- V príklade 1 si všimnite, kde všade možno vytvoriť vnútornú triedu.
Zrušte značku komentára pri riadku s tvorbou inštancií tried D a C. Všimnite si, že ak je trieda definovaná v inom rozsahu (bloku), mimo neho je neznáma.
- Pozrite, aké class súbory vznikli pri preklade príkladu 1. Je medzi nimi aj súbor, ktorý zodpovedá triede D, ktorej vznik je podmienený? Zmení sa situácia, keď metódu f() v metóde main() zavoláte s kladným parametrom?
- Príklad 2 demonštruje sprístupnenie inštancie vnútornej/anonymnej triedy prostredníctvom vonkajšieho rozhrania.
- Príklad 3 demonštruje využitie vnútorných/anonymných tried na prenos funkcionality do iného kontextu. Podobne ako v predchádzajúcom príklad, dosahuje sa to pomocou rozhrania definovaného vo vonkajšom kontexte, ktoré príslušná vnútorná trieda implementuje. Presne takto sa implementuje EventHandler v JavaFX.
- Spracovanie udalosti kliknutia na tlačidlo v hre s obrami a rytiermi bolo realizované aj referenciou na metódu a lambda výrazom.
K prednáške je priložený príklad, ktorý demonštruje využitie referencie na metódu a rôznych variantov lambda výrazov vo všeobecnom zmysle.
Vyskúšajte a preštudujte všetky varianty (odstránením príslušných značiek komentára).
^
Valentino Vranić
vranic at stuba.sk