(Java) AOP – Aspect Oriented Programming

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).
1

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.

2

Kemudian diterapkan konsep AOP di sana, sehingga menjadi seperti ini.

3

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.

Example

 aspect Logger {
 
        void Bank.transfer(Account fromAcc, Account toAcc, int amount, User user, Logger logger)  {
                logger.info("Transferring money...");
        }
 
        void Bank.getMoneyBack(User user, int transactionId, Logger logger)  {
                logger.info("User requested money back.");
        }
 
        // other crosscutting code...
}

Kesimpulan :

Bahwa AOP digunakan untuk menyempurnakan oop, dimana AOP merupakan System yang digunakan untuk memanagement Modeling yang di buat, biasanya AOP digunakan pada saat kita menggunakan Framework Spring untuk memparsing XML agar di olah dengan baik.

Referensi :
http://www.mkyong.com/spring/spring-aop-examples-advice/
http://blog.uin-malang.ac.id/ainul/2010/11/01/aspect-oriented-programming-aop-%E2%80%93-konsep-dasar/#respond

Advertisements

Published by

jarcode

hello I am jarcode

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s