3

私は、C ++に関連して、コンポーネント化(OOPの概念とは対照的で、コンポーネント指向プログラミングとも呼ばれます)を理解しようとしています。

私はこれについてインターネットで調査しましたが、利用できる構造化された情報はほとんどありませんでした。WindowsのCOMオブジェクトはかなりコンポーネント化されているようです。http://c2.com/cgi/wiki?ComponentDefinitionが便利だと思いました。

コンポーネント化の概念を説明するための、最良で単純なC ++コード例は何でしょうか?

次のような高レベルのアイデアがいくつかあります。

  1. 私は英語の単語を持っています。単語は、いくつかの記号または文字で構成されて います。現在、各文字は、アルファベット、数字、句読点、空白などのいくつかのタイプにすることができます 。したがって、各 アルファベット、数字など。基本的な構成要素を表し、それに基づいて単語が形成され、存在します。単語は(記号の)集合体になり、それに基づいてが形成されます。

  2. 陽子、中性子、電子は、原子を形成する個々の凝集体成分です。

では、複合デザインパターンはコンポーネント化の概念とどのように異なりますか?

案内してください。ありがとう。

4

1 に答える 1

1

おっしゃるように「コンポジット」はデザインパターンです。デザインパターンは、ソフトウェアの設計中に適用できる問題と解決策のペアです。

「コンポーネント化」という用語の解釈を正しく理解していれば、SWの構造を定義するために、設計よりも高い抽象化レベルで従われるアーキテクチャの原則です。

(私がアーキテクチャとはどういう意味かを正確に知りたい場合は、デザイン/アーキテクチャという用語を正式に定義しようとしているこのペーパーを参照してください。)

もう少し深くなると、「Composite」はコンテナとコンテンツを同じインターフェイスで処理するのに役立ちます。たとえば、例で「複合」パターンを適用すると、インターフェイス「粒子」を定義して、原子/電子/陽子/中性子を粒子として扱うことができ、同時にコンテナ/コンテンツの関係も維持されます。これは非常に特殊な問題と解決策のペアであり、特定の状況でのみ発生する可能性があります。

ただし、「コンポーネント化」はより広範な状況に適用でき、そもそもコンテナとコンテンツの関係があれば気になりません。コンポーネント間にこのような関係がある場合でも、同じインターフェイスでそれらを扱う必要はありません。

于 2012-08-01T13:29:44.853 に答える