Objektovo-orientované programovanie, ak. rok 2022/23

Cvičenie 10

(k prednáške 8)

späť


Projekt

Pokračujte v práci na projekte. Zvážte uplatnenie aspektovo-orientovaného programovania v projekte.

Na počítačoch v CPU je v Eclipse inštalovaná podpora pre aspektovo-orientované programovanie: AspectJ Development Tools (AJDT). Na vlastných počítačoch si ju môžete jednoducho pridať cez Eclipse Marketplace. Eclipse Marketplace nájdete v menu Help. Dajte vyhľadať AJDT a spusťte inštalovanie jedinej nájdenej položky. Potvrďte všetko a dovoľte prostrediu Eclipse, aby sa reštartovalo.

Ak vám Eclipse pri pokuse o vytvorenie aspektu hlási chyby, pravdepodobne máte novšiu verziu tohto prostredia, s ktorým AJDT (zatiaľ) nefunguje. Preto si inštalujte verziu 2021-06. Následne pridajte JavaFX tak, ako ste to už robili.

Na použitie jazyka AspectJ vo vašich projektoch je najjednoduchšie, aby ste vytvorili nový AspectJ projekt, a následne do neho skopírovali vlastný zdrojový kód.

Na uplatnenie aspektovo-orientovaného programovania v jestvujúcom Java projekte v Eclipse sa dá použiť aj konverzia na AspectJ projekt (kliknúť pravým tlačidlom na projekt a vybrať Configure/Convert to AspectJ project). Konverzia v skutočnosti iba pridá AspectJ Runtime Library a ako kompilátor nastaví AspectJ kompilátor, čo sa dá spraviť aj manuálne. Plugin AJDT zatiaľ podporuje iba Javu 8, takže pri konverzii Java 9 projektu budete musieť prepnúť aj toto.

AspectJ kompilátor je dostupný aj samostatne vo webovom sídle AspectJ.

^


Úlohy

  1. Odsledujte, ako funguje aspektovo-orientované monitorovanie a riadenie hodnôt súradníc bodu v príkladoch s triedou Point z prednášky (pre každý prípad môžete vytvoriť samostatný projekt v Eclipse):
    1. jednoduché monitorovaním prístupu (adresár AccessMonitoring)
    2. rôzne typy videnia after pri monitorovaní prístupu (adresár AccessMonitoring-after)
    3. monitorovanie rozsahu súradníc bodu (adresár RangeMonitoring)
    4. zastavenie operácií so súradnicami bodu mimo povolený rozsah (adresár RangeControl1)
    5. skrolovanie bodu v prípade operácií so súradnicami bodu mimo povolený rozsah (adresár RangeControl2)
    6. skrolovanie útvarov v prípade operácií so súradnicami bodu mimo povolený rozsah (adresár RangeControl3)
    K poslednému prípadu je priložený aj aspekt PointMonitor, ktorý môžete vyskúšať, ak by ste chceli podrobnejšie porozumieť často používaným bodovým prierezom. Tento aspekt demonštruje aj riešenie problémov s rekurzívnym uplatnením videní.
  2. Experimentujte s kódom hry z prednášky, v ktorom boli uplatnené aspekty na logovanie a pridanie štítov rytierom.
  3. V hre je implementovaný aj návrhový vzor Observer. Na to stačil jeden aspekt: FollowWarriorEnergy. Všimnite si, ako sú týmto aspektom zavedené prvky vzoru do tried Game a ClashWindow, ktoré v nich už fyzicky nie sú, a ako sú následne pomocou videní sprevádzkované. Skúste do aspektu FollowWarriorEnergy implementovať zaradenie vášho vlastného sledovateľa stretu, ktorý ste implementovali na cvičení 3.
  4. (nepovinná úloha) Experimentujte s kódom aspektovo-orientovanej implementácie príkladu uplatnenia návrhového vzoru Observer na teplotných senzoroch. Pre porovnanie môžete pozrieť aj objektovo-orientovanú implementáciu tohto príkladu (v tom istom archíve), ktorá bola sprístupnená k prednáške 3.

^



Valentino Vranić
vranic at stuba.sk