Objektovo-orientované programovanie, ak. rok 2023/24

Cvičenie 4

(k prednáške 4)

späť


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.

  1. 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.
  2. 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.
  3. 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ť):
    1. 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.
    2. 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?
    3. Príklad 2 demonštruje sprístupnenie inštancie vnútornej/anonymnej triedy prostredníctvom vonkajšieho rozhrania.
    4. 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íklade, 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.
  4. 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