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

Kirim email ke