web-dev-qa-db-ja.com

コンポーネント指向プログラミングとは何ですか、それはOOPとどう違うのですか?

コンポーネント指向プログラミングとは正確には何ですか?それはオブジェクト指向プログラミングとどう違うのですか?

ありがとう

8
user3150201

私はコンポーネント指向プログラミングを、オブジェクト指向プログラミングの特殊な子孫と呼びます。その目的は、再利用が容易な汎用オブジェクトを作成することです。

1990年代後半、私はUT Austin Department of Computer ScienceのOpen Houseに参加しました。私の目標は、古い友人である教授と話をして、問題についての洞察を得ることでした。 d仕事で出会った(彼は私に必要な正確な指針をくれたし、別の昔の友達と話をするように勧めた。その友達も私にとても助けてくれた)。 Don Batoryは、コンポーネントオブジェクトの構築と構成(組み合わせ)を簡単にするプログラムジェネレーターの構築に取り組んでいました。

彼のコメントは、オブジェクト指向プログラミングでは不十分であるというものでした。定義されたインターフェースを持つオブジェクトを提供しましたが、それらは必ずしも完全に再利用可能であるとは限りませんでした。無関係な懸念事項がオブジェクトに侵入しないようにするには、特別なレベルの設計作業が必要です。バートリ博士は、データベースの世界からこの分野に参入し、データベースシステムの構築を容易にすることを目指していました。ある時点で、オペレーティングシステムの構築でやや似たような問題に取り組んでいる人たちについて聞いたとき、彼らが働いていた解決策が彼がやっていたこととほぼ同じであり、再利用可能な根本的な本体があったことを示すことに気づき、ショックを受けました知識。

実際の例:1990年代半ばに取り組んだプロジェクトで、トラッカーがターゲットにロックされていない限り、レーザー距離計を作動させないという「ビジネスルール」がありました。オブジェクト指向の方法では、発射コマンドの最後のインターロックとして、ロックステータスをレンジファインダーオブジェクトに渡すことができます。コンポーネントモデルは、レンジファインダーオブジェクトがFire()メソッドをエクスポートし、レンジファインダーを使用するビジネスロジックがトリガーをプルする前にターゲットロックステータスをチェックすることを示しています。

5
John R. Strohm

OOPアプローチはクラス間の関係に焦点を当てていますが、COPは独立して動作し、それらがどのように動作するかを正確に知る必要がない交換可能なモジュールにより焦点を当てています。

編集-これは不明確だとは思いません。質問はアプローチの違いを扱っています。完全に分離しているわけではありません。 COPでは、モジュールは、そのまま使用および再利用できる再利用可能な関数駆動型オブジェクト(多くの場合、クラスのグループ)と見なすことができます。 OOPはより細かく、機能的に実行するために他のクラスとの特定の相互作用を必要とする可能性が高い個々のクラス自体に焦点を当てています。

3
Gillespie