Thursday, April 21, 2011

Aspect Oriented Programming (AOP)

Aspect Oriented Programming (AOP) adalah pola pikir dalam pemrograman. AOP berada di posisi yang sama dengan Object Oriented Programming (OOP) yaitu suatu konsep dan AOP ada untuk melengkapi OOP. AOP menambahkan konsep baru dan sederhana ke dalam OOP untuk lebih mempertajam (sifat) modularity yang ada dalam OOP.
Pemahaman saya tentang modularity dalam pemrograman adalah memisahkan suatu aplikasi menjadi bagian-bagian yang lebih kecil, yang disebut modul. Modul-modul itu dapat terdiri dari dari satu atau banyak kelas (class).
 
Akan terdapat banyak kelas dalam satu aplikasi. Dan bagaimana kelas-kelas itu saling berhubungan adalah dengan pemanggilan fungsi (method). Di sinilah AOP berperan. Awalnya hubungan antar kelas berlangsung seperti ini.
 
Kemudian diterapkan konsep AOP di sana, sehingga menjadi seperti ini.
 
Dengan begini ActionSave bahkan tidak tahu kalau fungsi auth() akan selalu di eksekusi terlebih dahulu tepat sebelum fungsi save() dieksekusi. Sangat mempertajam sifat modularity. Apa bagusnya hal itu? ActionSave tidak akan pernah bergantung pada Auth. ActionSave adalah kelas independen.
Apakah ActionSave tidak bergantung pada Dao? Tidak, karena ActionSave dan Dao memiliki satu tugas yaitu meyimpan data (save) dan ActionSave tidak akan pernah lengkap dan tidak akan berjalan dengan benar jika mereka dipisahkan. Sedangkan dengan Auth, ActionSave dapat saja berjalan dengan benar dengan hasil yang diinginkan walaupun tanpa autentikasi. Auth memiliki fungsi-fungsi untuk autentikasi.
Hal baik lainnya :
  1. Reusable
  2. ActionSave tidak perlu bertanggung jawab untuk pemanggilan fungsi autentikasi user. Sebaliknya Auth yang akan bertanggung jawab agar ActionSave selalu di akses oleh user-user yang berhak (isu crosscutting-functionalities).
  3. Tidak ada duplikasi kode program untuk fungsi autentikasi, hanya berada dalam Auth (isu code-scattering).
  4. Tidak ada duplikasi pemanggilan fungsi autentikasi (isu code-scattering).
  5. Jika terjadi perubahan di kelas Auth tidak akan pernah mengganggu ActionSave (isu code-scattering).
  6. Kode program akan menjadi lebih rapi.
Bagian ini baru menunjukkan bagaimana konsep AOP bekerja. Apa saja yang membangun konsep AOP dan bagaimana mengimplementasikannya akan dibahas di post selanjutnya. Karena AOP adalah suatu konsep, maka dapat menggunakan bermacam cara, teknik, dan perangkat lunak. Sedang saya sendiri menerapkan konsep AOP ini menggunakan Spring AOP. Saya mengatakannya sekali lagi AOP adalah konsep dan banyak cara untuk menerapkan konsep.

0 comments:

Post a Comment