Windows operációs rendszer alatt fogunk dolgozni, egyszerű szövegszerkesztő (pl. NotePad++) segítségével. 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 érdemes kijelölni a fentieket, ... ... a parancssor fejlécén jobb klikk ... Szerkesztés->Beillesztés ... Foprogram.java és Aspektus.aj értelem szerint helyettesítendő a továbbiakban fel/le gombokkal lehet visszahozni a kiadott parancsokat java -cp ".;c:\aspectj1.6\lib\aspectjrt.jar" Foprogram Foprogram után kiterjesztést nem szabad beírni 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. 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ódban, 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 dobtak a programban levő függvények. Az aspektus kivétel kiváltásakor írja ki a sztenderd kimenetre a hívó objektumot és a kiváltott kivételpéldányt. Mj.: a fentiekben kihasználjuk, hogy bármilyen típusú x változó kiíratható a System.out.println(x) paranccsal. Feladatok beadása. Navigálj a https://pnyf.inf.elte.hu/bead/index.php oldalra. Regisztrálj; ehhez a felhasználónevedet kell megadnod, és egy általad tetszőlegesen választott jelszót. Ezután lépj be, és vedd fel Kitlei Róbertnél a (technikai okokból) "Kvantummechanika" névre hallgató tárgyat. A "Nyári egyetem feladatok" mellett található "új megoldás"-ra kattintva egy szövegdoboz jön elő, ebbe másold bele a megoldásaid fájljait. Minden aspektushoz készíts egy azt tesztelő főprogramot is (ElsoParamKiirTeszt.java, HivoHivottTeszt.java, KivetelNaploTeszt.java), ezek forrásait is illeszd be a dobozba.