Yani’s Weblog

it’s all about software engineering…

AspectJ – Example

Salah satu bahasa pemrograman yang mendukung aspect oriented programming (AOP) adalah Java dengan library-nya AspectJ. Sempat dibahas sedikit dari tulisan ini dan komentar-komentarnya

Berikut adalah beberapa konsep baru yang diperkenalkan dalam AOP:  joinpoint, poincut, dan advice.

Joinpoint merupakan definisi lokasi pada kode program, dimana saat eksekusi, aspek tertentu akan dieksekusi sesuai dengan aturan yang telah ditetapkan. Joinpoint didefinisikan di dalam sebuah aspect dengan menggunakan dua macam konstruktor, yaitu poincut dan advice.

Pointcut merupakan konstruktor yang digunakan untuk menunjuk joinpoint tertentu pada saat eksekusi. Sebuah pointcut dideklarasikan dengan menggunakan kata kunci pointcut. Ada banyak tipe poincut, berikut adalah contohnya untuk tipe pemanggilan method :   poincut lokasi1 () : call (int Date.getHour());

Artinya, kita mendefinisikan sebuah lokasi pada kode program (lokasi1), yaitu lokasi pemanggilan method getHour() dari kelas Date.

Advice mendefinisikan potongan kode yang akan dieksekusi pada sebuah joinpoint. Ada tiga jenis advice, yang masing-masing menentukan di sebelah mana advice tersebut akan disisipkan. Jenis advice pertama dieksekusi sebelum joinpoint (before advice), jenis kedua dieksekusi setelah joinpoint (after advice), dan yang terakhir dieksekusi pada joinpoint (around advice).

Contohnya:  before () : lokasi1 () { system.out.println (“Before : ” + thisJoinPoint);  }

Kode aspect yang lengkap untuk contoh di atas adalah sbb:

public aspect ngeDebug {
pointcut lokasi1 ()   :  call (int Date.getHour ());
before () : lokasi1 ()    { system.out.println (“Before : ” + thisJoinPoint);}}

Jadi, saat debuging misalnya, kita tidak perlu “menabur” kode println dimana-mana (yang kemudian sering lupa dihapus), tapi cukup mendefinisikan sebuah aspect ngeDebug seperti di atas…

January 14, 2009 Posted by yaniwid | aspect oriented | | 9 Comments