taken from wikipedia =>
In computer science, cross-cutting concerns are aspects of a program which
affect (crosscut) other concerns. These concerns often cannot be cleanly
decomposed from the rest of the system in both the design and implementation,
and result in either scattering or tangling of the program, or both.
For instance, if writing an application for handling medical records, the
bookkeeping and indexing of such records is a core concern, while logging a
history of changes to the record database or user database, or an
authentication system, would be cross-cutting concerns since they touch more
parts of the program.
=======
katanya.. cross-cutting concerns itu adalah aspek di program yg mempengaruhi
concern2 yg lain. dan seringkali sulit untuk dipisahkan dari sistem baik dalam
level design dan implementasi, jadi code2 yg memotong itu ada atau diselipkan
di program yg sebenarnya gak ada nyambungnya sama urusan yg motong tadi.
contohnya kita buat aplikasi untuk medical records, bookeeping dan indexing itu
core concern, tapi klo audit, logging perubahan record atau user, authentikasi
itu cross-cuting concern karena dia nyentuh hampir di setiap bagian2 program yg
gak ada hubungannya sama sekali
class Patient {
public void attendMedicalCheckUp(Date date) {
// log.info("patient bla bla attende meeting bla bla "); => cross
cuting
// do core logic
}
public void suggestToGoHome() {
// log.info("suggestToGoHome") => cross cuting
// do core logic
}
}
class Doctor {
public void assignToTakeCareOf(Patient ) {
// log.info("attend"); => cross cuting
// do core logic
}
}
seperti yg kita lihat. logging itu ada dimana2... dan gak ada nyambungnya
dengan urusan core logic. jadi kita harus insert logging statement dimana2
sebelum method di invoke atau sesudah, etc. statement2 itu jorok2 in code. dan
bikin sulit ngebaca code nya. alangkah baiknya klo code2 logging itu di
pindahin di suatu tempat sehingga body method yg mengandung core logic dari
domain tersebut bersih. nah.. code yg mengandung logging itu kemudian diset
sedemikian rupa sehingga dia akan dieksekusi pada waktu sebelum atau sesudah,
etc sesuai dengan kebutuhan. jadi code kita tetap bersih dari logging yg
ngotorin itu tetapi kita tetap mendapatkan logging requirement yg diinginkan.
dan dapat direuse untuk kebutuhan yg lain.
________________________________
Dari: Adelwin Handoyo <[email protected]>
Kepada: JUG-Indonesia <[email protected]>
Terkirim: Sel, 2 Maret, 2010 15:49:16
Judul: Re: [JUG-Indonesia] Tanya AOP
Sesuatu yang di lakukan secara orthogonal..
Kalo gitu ngerti kagak?
Adelwin Handoyo
- adel...@gmail. com -
Sent from my Mac
________________________________
From: dir dir <sikerasakti@ gmail.com>
Reply-To: JUG-Indonesia <jug-indonesia@ yahoogroups. com>
Date: Tue, 2 Mar 2010 09:30:37 +0700
To: JUG-Indonesia <jug-indonesia@ yahoogroups. com>
Subject: Re: [JUG-Indonesia] Tanya AOP
>
>
>
>
>>
>>
>>
>>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
Berselancar lebih cepat. Internet Explorer 8 yang dioptimalkan untuk
Yahoo! otomatis membuka 2 halaman favorit Anda setiap kali Anda membuka
browser. Dapatkan IE8 di sini!
http://downloads.yahoo.com/id/internetexplorer