アスペクト指向、サブジェクト指向、およびロール指向プログラミングの違いは何ですか?


14

これら3つのパラダイムを説明する多くの論文があることは知っていますが、模式的な説明を探しています。

ここにはアスペクト指向プログラミングの非常に良い説明がいくつかありますので、Stack Overflowの人々が配信に慣れているような質の高い答えを得るためにこの質問をしています。


これはおそらくより多くのprogrammers.seの質問ですが、それはまた本当に無制限です。参照stackoverflow.com/faq#dontaskを - 「あなたの質問を合理的にスコープされなければならない、あなたの質問に答える本全体を想像することができるならば、あなたはあまり求めています。」
マーリンモーガングラハム

:私は、元のトーマス・クーン読むことから始めたいamazon.com/Structure-Scientific-Revolutions-Thomas-Kuhn/dp/...

私の質問に対する短い答えも想像できます。たとえば、アスペクト指向プログラミングを説明する方法は次のとおりです。これは、ポイントカットを使用して、他の処理ユニットの前後にアスペクトと呼ばれる「処理ユニット」をモジュール方式で追加する方法です。私にとっては、たとえばInform7プログラミング言語など、ルールベースのプログラミングによく似ています。inform7.com/learn/man/doc188.html

回答:


9

これに関する本を書くことでこれに答えることができます。ただし、これは基本的な比較です

1.主題指向プログラミング

サブジェクト指向プログラミングは、次のようにオブジェクト指向から根本的に逸脱しています。オブジェクト指向では、オブジェクトは固有の観点から定義されます(つまり、オブジェクトを独立して記述するモデルに基づいて)。これに基づいて、その属性(プロパティ)とメソッド(動作)が導出されます。アプリケーションは使用のみを行いますこれらのプロパティと動作の。これとは反対に、サブジェクト指向プログラミングでは、そのような分離ではオブジェクトは存在しません(モデル化されません)。その過程で、オブジェクトの動作は、元のオブジェクトの作成者の範囲と制御を超えたオブジェクトの他のさまざまな「サブジェクト」によって提供されます。 「オブジェクトについて。これは、ここで説明しているものと比較して、継承のテンプレートを定義する以上の方法になると思います。

用語(および概念)の議論の余地のない起源は、論文「主題指向プログラミング:純粋な物体の批判、ウィリアム・ハリソンおよびハロルド・オッシャー」ます。ここに別の良い論文があります。個人的には、これは理論的な枠組みだと思います。言語/実装があるかどうかわかりません

参照してください、このこのこれをしてください。

2.アスペクト指向プログラミング

アスペクト指向プログラミングは、「oncernsの分離」の概念から生まれました。基本的には、横断的である懸念のために手続き型またはオブジェクト指向プログラミングを拡張します。単純化を進めると、ソフトウェアには機能的な要件非機能的要件があると言えます。これらの横断的な要件には、ロギング、例外処理、スレッド同期、メモリ管理、最適化などの例が含まれます。これらのクロスカッティングASPECTSは、他の機能部品とは別に独立して表現および実装する必要があります。
この分野での包括的な作業は、からのものです IBMによるものです。基本的にそれぞれのそのような懸念またはアスペクトは互いに独立しており、多次元の「懸念空間」を形成します。、(これを読んでください)。

Aspect Orientedの実用的な実装には、AspectJAspectC ++などがあります。参照してくださいこれを

3.役割指向プログラミング
エージェントに向けて進化するにつれて、エージェントが実行する正確なアクティビティが環境に依存する「役割」と目的を定義することが必要になることがよくあります。これは人間の概念理解に似ています。

主な目的は、協力プロセスと呼ばれる明示的な構成を定義することにより、タスクの目的を協力機能から切り離すことです。。役割は、一連の機能と予想される動作としてモデル化されます。ただし、これらのアプローチを使用すると、実行環境のモデリングや、エージェント/オブジェクトが環境をどのように認識できるかもモデル化できます。参照してくださいこれを

役割ベースのモデリングと実装の研究で提案されているさまざまなフレームワークがあります。それらのいくつかは、ロープBRAINALAADINより

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.