2. fejezet, Aspektus orientált programozás

Ez a jegyzetfüzet tartalmazza az Aspektus orientált programozást, ám nem etalon a módszert alkalmazók számára. Egyszerű jegyzetfüzet, amit bárki használhat, akit érdekel a programozási paradigmák közül az Aspektus orientált programozás.

Objektumok, események jellegzetes állapotait (cross-cut), és az arra reagáló programrészt aspektusoknak nevezzük. Az objektum állapotok és az események speciális körülmények között, jellegzetes állapotokban módosíthatják a program futását. Ilyen jellegzetes aspektus a naplózás, ami erőforrás igényes, és hibátlan működés közben egy része fölösleges, mivel a program lassulásával is jár. Az AspectJ és a Java 5-el bevezetett instrumentálás (bájt kód módosítás) említhető meg, mint az AOP megvalósítása Java nyelven. Az AspectJ fordítási időben alakítja a végeredményül  kívánt formára az osztályt, az instrumentálás pedig betöltődés közben dolgozik a már lefordított bájt kódon.

Lássuk mit is jelentenek ezek a átfedési pontok egy Morgan Deters szerkesztette útmutató szerint:

  • kapcsolódási pontok (join points): egy jól meghatározott helye a programnak
    Lehet ez egy metódus híváson belül, vagy egy osztály konstruktorában
  • metszéspont (pointcut):  kapcsolódási pontok halmaza
    Minden metódus A osztályban, ami hívja a B osztály metódusait
    Minden mező változása A osztály leszármazottaiban
  • értesítés (advice): automatikusan lefutó kódrész, ami minden kapcsolódási pontnál lefut bizonyos metszéspontok esetén.
    Megadható előtte (before), utána (after) és helyette (around, in place of) futási lehetőség a metszéspont kapcsolódási pontjainál.
  • Lexikális bevezetés (Lexical introdution): leszármaztatás és ez általi bővítés nélkül funkcionalitás hozzáadása egy osztályhoz.
    Például legyen létrehozható A osztály klónozással (implementálja a Cloneable interfészt)