Az AspectJ fájlok kiterjesztése .aj. Lefordítani és futtatni a következőképpen fogjuk őket. cmd Parancssor indítása cd belépés a forrásfájlok könyvtárába c:\aspectj1.6\bin\ajc.bat -cp ".;c:\aspectj1.6\lib\aspectjrt.jar" Foprogram.java Aspektus.aj java -cp ".;c:\aspectj1.6\lib\aspectjrt.jar" Foprogram Az AspectJ használható fejlesztőkörnyezetekben is, pl. Eclipse-ben az alábbi helyet kell megadni a Help->Install New Software menüpont kiválasztása után: http://www.eclipse.org/ajdt/downloads/ Egy aspektus advice-okat tartalmaz, és esetlegesen deklarációkat. public aspect { } Advice-ok egyszerűsített szintaxisa: ( ) : { } Ezek lehetséges értékei közül a fontosabbak: before after around int i Object o ... call( .() ) A nevek tartalmazhatnak csillagot, pl. set* A paraméterek listája végződhet .. -ra A típusok helyett is írható * this(t) t szerepel a kötött változók között Azt írja le, hogy a t objektum kódja hívja meg az adott függvényt target(t) t szerepel a kötött változók között Azt írja le, hogy a t objektumnak hívódik meg a tagfüggvénye args() minden eleme szerepel a kötött változók között végén lehet .. && || ! (lehet üres) returning throwing returning() throwing() Feladatok. 1. Készíts olyan ElsoParamKiir aspektust, amely a Teszt modul tetszőleges, legalább egy paraméterrel rendelkező függvényének meghívásakor kiírja a sztenderd kimenetre az első paraméter tartalmát. Készíts egy Teszt modult is az aspektus kipróbálására. Mi történik akkor, ha a fentiekben a Teszt helyett tetszőleges modulra vonatkoztatjuk az aspektust? 2. Számold meg a HivoHivott aspektus segítségével, hány olyan metódushívás történik a kódunkban, amelynél a hívó objektum megegyezik a hívottal. Minden hívásnál írd ki a sztenderd kimenetre, éppen hol tart a számláló. 3. Készíts olyan KivetelNaplo nevű aspektust, amelyik naplózza, hogy milyen kivételeket dobott a programunk. Az aspektus kivétel kiváltásakor írja ki a sztenderd kimenetre a hívó objektumot és a kiváltott kivételpéldányt. Nehezebb verzió: az aspektus naplófájlba dolgozzon.