Apa perbedaan antara pemrograman berorientasi aspek, berorientasi subjek, dan berorientasi peran?

14

Saya tahu ada banyak makalah yang menjelaskan ketiga paradigma ini, tetapi saya sedang mencari penjelasan skematis.

Ada beberapa deskripsi yang sangat bagus tentang pemrograman berorientasi aspek di sini, jadi saya mengajukan pertanyaan ini dengan harapan mendapatkan jawaban berkualitas tinggi yang biasa digunakan oleh orang-orang di Stack Overflow.

Adam Lear
sumber
Ini mungkin lebih dari pertanyaan programmer, tetapi juga benar-benar terbuka. Lihat stackoverflow.com/faq#dontask - "Pertanyaan Anda harus dicakup secara wajar. Jika Anda dapat membayangkan seluruh buku yang menjawab pertanyaan Anda, Anda terlalu banyak bertanya."
Merlyn Morgan-Graham
Saya akan mulai dengan membaca Thomas Kuhn yang asli: amazon.com/Structure-Scientific-Revolutions-Thomas-Kuhn/dp/…
Saya juga bisa membayangkan jawaban singkat untuk pertanyaan saya. Sebagai contoh, berikut ini adalah bagaimana saya akan menggambarkan pemrograman berorientasi aspek: Ini adalah cara untuk menambahkan "unit pemrosesan" yang disebut aspek dengan cara modular sebelum dan sesudah unit pemrosesan lainnya dengan cara pointcuts. Bagi saya itu sangat mirip pemrograman berbasis aturan, misalnya bahasa pemrograman Inform7. inform7.com/learn/man/doc188.html

Jawaban:

9

Seseorang dapat menjawab ini dengan menulis buku tentang ini. Namun, di sini adalah perbandingan dasar

1. Pemrograman Berorientasi Subjek

Pemrograman Berorientasi Subjek adalah keberangkatan radikal dari Object berorientasi sebagai berikut. Dalam OO, objek didefinisikan dalam istilah intrinsik (yaitu berdasarkan pada model yang menggambarkannya secara independen). dan berdasarkan ini atributnya (properti) dan metode (perilaku) diturunkan. Aplikasi hanya membuat penggunaanproperti dan perilaku ini. Bertentangan dengan ini, dalam pemrograman berorientasi subjek, tidak ada objek yang ada (dan dimodelkan) dalam isolasi semacam itu. Dalam prosesnya, tetapi perilaku objek telah disediakan oleh berbagai "subjek" objek lain yang berada di luar ruang lingkup dan kontrol penulis objek asli. Anggap itu sebagai cara untuk memperluas berbagai "perilaku yang dapat ditentukan secara independen "pada objek. Saya pikir ini akan jauh melampaui mendefinisikan template warisan dibandingkan dengan apa yang sedang dibahas di sini.

Asal usul istilah (dan konsep) yang tak terbantahkan berasal dari makalah " Pemrograman Berorientasi Subjek: Kritik terhadap Objek Murni , William Harrison dan Harold Ossher". Ini kertas bagus lainnya . Meskipun secara pribadi saya percaya ini adalah kerangka teori. Saya tidak tahu apakah ada bahasa / implementasi

Lihat ini , ini dan ini untuk info lebih lanjut.

2. Pemrograman Berorientasi Aspek

Pemrograman berorientasi aspek berasal dari konsep " Pemisahan oncerns ". Pada dasarnya ia memperluas baik pemrograman prosedural atau berorientasi objek untuk masalah yang saling terkait. Menyederhanakan orang dapat mengatakan bahwa perangkat lunak memiliki persyaratan fungsional dan yang non-fungsional . Persyaratan lintas sektor ini mencakup contoh-contoh seperti pencatatan, penanganan pengecualian, sinkronisasi utas, manajemen memori, optimisasi dan sebagainya. ASPEK lintas sektoral ini harus diekspresikan dan diterapkan secara terpisah dan independen ke bagian fungsional lainnya.
Pekerjaan komprehensif dalam bidang ini berasal dari IBM ; pada dasarnya masing - masing masalah atauaspek - aspek bisa saling independen membentuk "ruang perhatian" multidimensi. , (baca ini ).

Beberapa implementasi praktis yang baik dari Berorientasi Aspek adalah AspectJ dan AspectC ++ dan banyak lagi . Lihat ini .

3. Pemrograman Berorientasi Peran
Ketika kita berevolusi menuju agen, sering kali perlu untuk mendefinisikan "peran" dan tujuan di mana sebagai aktivitas pasti yang dilakukan agen tergantung pada lingkungan tempat dia bekerja. Ini analog dengan pemahaman konseptual manusia.

Tujuan utama adalah untuk memisahkan tujuan tugas dari kemampuan kerjasama dengan mendefinisikan konstruk eksplisit yang disebut proses kerjasama . Peran dimodelkan sebagai seperangkat kemampuan dan perilaku yang diharapkan. Namun, pendekatan ini juga memungkinkan pemodelan lingkungan eksekusi dan bagaimana agen / objek dapat memahami lingkungan juga. Lihat ini .

Ada berbagai kerangka kerja yang diusulkan dalam penelitian untuk pemodelan dan implementasi berbasis peran. Beberapa dari mereka adalah ROPE , BRAIN , ALAADIN dan banyak lagi .

Dipan Mehta
sumber