Benernya kalo ada kertas n pensil, jauh lebih gampang digambarin. Lu punya multiple concerns: customer, front-office, order management, provisioning, accounting, inventory, billing, etc. Kalo lu gambar tuh masing2 concerns sebagai garis vertical, lu bakal punya belasan garis vertical berjejer paralel. Trus lu ada bbrp garis laen: logging, transaction, security, caching, fetching strategy, error-handling, etc. Garis2 ini gak berjejer vertical disamping garis2 sebelumnya, melainkan horisontal memotong *across* semua garis2 vertical. Semua garis vertical lu kena impactnya.
Tanpa AOP, lu mesti implement crosscutting concern ini di masing2 tiap module elu (di customer class, shopping-cart class, billing, inventory, etc,.. semua mesti implement logging, caching, transaction etc yang repetitive). Dengan AOP, lu gak perlu nulis manual. Class lu bakal otomatis dimodify (at runtime ato compile time) disisipin dengan berbagai logging/caching/transaction/security aspects tadi. Ini bisa diachieve dengan beberapa trick: 1. code-generator: lu run tool yang otomatis ngebaca source code lu dan create classes/methods baru ke project lu, ato nyisipin beberapa lines of code ke dalem existing class2 lu, misalnya dengan xdocklet 2. pre-compilation instrumentation: tool lu intercept compilation process di project lu, dan bakal nyisipin class/method/lines baru di source-code lu sebelom dicompile jadi bytecode. Misalnya EMMA 3. post-compilation instrumentation: tool lu bakal ngebaca .class ato .jar lu (yang udah dicompile), dia decompile dan recompile jadi .class/.jar baru yang udah diubah2 dengan disisipin method/class/line baru. EMMA juga bisa gini 4. load-time static weaving: pada saat lu run application lu, framework lu bakal intercept class-loader lu, sehingga tiap kali dia ngeload class2 lu, bakal diubah2 dulu dengan disisipin implementation baru. Gw gak tau contoh di java, tapi di .net misalnya PostSharp dan Typemock Open-AOP 5. dynamic proxy: so far semua teknik diatas flexible enough buat mangle static methods ato ganti2 semau2nya. Some people find it terlalu banyak magic involved tho. Dynamic proxy cuma pake proxy pattern dengan ngebungkus original object instance dengan proxy object yang intercept instance-method invocations. Ini so far the most common form of AOP yang disupport oleh IoC containers. E.g. Spring AOP, AspectJ 2010/3/3 dir dir <sikerasa...@gmail.com> > > > Ngak ngerti apa yg kamu maksud dengan "Yang Sifatnya ngejembreng".... > > Bisa diperjelas lagi dengan menggunakan contoh? > > Terima kasih. > > Dir. > > 2010/3/2 Jecki <jecki...@gmail.com> > > >> >> terjemahan kaku: pertimbangan yang memotong silang. >> >> terjemahan bebas: bagian2 dari aplikasi yang sifatnya ngejembreng >> *halah.. bahasa apaan ngejembreng* di semua/hampir semua module. >> >> 2010/3/2 dir dir <sikerasa...@gmail.com <sikerasakti%40gmail.com>> >> >> > >> > Jecki numpang tanya... Cross Cutting Concern itu maksud nya apa yah? >> > >> > Thanks. >> > >> > Dir. >> > >> > 2010/3/1 Jecki <jecki...@gmail.com <jecki.go%40gmail.com>> >> >> >> >> AOP itu untuk tackle cross-cutting concern. Salah satu contoh paling >> mudah ya logging. Contoh lain: security, declarative transaction >> demarcation. >> >> >> > > >