問題タブ [object-composition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
447 参照

c# - C#にメソッドの継承はありますか

クラス全体の継承ではなく、メソッドの継承のような機能があるかどうか疑問に思っています。説明しようとしていることを詳しく説明します。

奇妙に見えることは知っていますが、オブジェクトコンポジションパターンで委任を行う方法を読んでいて、なぜかこのパターンを考えました。

0 投票する
4 に答える
4833 参照

oop - 継承と構成の違い

継承と構成の次の違いを抽出しました。バックエンド オブジェクトの作成の遅延とはどういう意味ですか? 以下の違いを見つけてください。

コンポジションを使用すると、バックエンド オブジェクトが必要になるまで (およびそうでない場合)、バックエンド オブジェクトの作成を遅らせたり、フロントエンド オブジェクトの存続期間全体にわたってバックエンド オブジェクトを動的に変更したりできます。継承を使用すると、サブクラスが作成されるとすぐにサブクラス オブジェクト イメージ内のスーパークラスのイメージを取得し、サブクラスの存続期間を通じてサブクラス オブジェクトの一部として残ります。

0 投票する
5 に答える
3192 参照

c++ - オブジェクトコンポジションはコードの再利用を促進します。(T / F、なぜ)

私は試験のために勉強していて、この質問を理解しようとしています。具体的な質問は「継承とオブジェクトコンポジションの両方がコードの再利用を促進する(T / F)」ですが、質問の継承部分は理解していると思います。

同様のメソッドを複数の子クラス内で同じように実装する必要がないように、同様のメソッドを抽象基本クラスに配置できるため、継承によってコードの再利用が促進されると思います。たとえば、3種類の図形があり、各図形のメソッド「getName」がデータメンバー「_name」を返すだけの場合、抽象ベースに1回実装できるのに、このメソッドを各子クラスに再実装するのはなぜですか。クラス「形状」。

ただし、オブジェクト構成についての私の最も良い理解は、オブジェクト/クラス間の「has-a」関係です。たとえば、生徒には学校があり、学校には多数の生徒がいます。これは、お互いがなければ実際には存在できないため、オブジェクトコンポジションと見なすことができます(生徒がいない学校は、正確には学校ではありませんか?など)。しかし、これら2つのオブジェクトがデータメンバーとして相互に「持つ」ことで、コードの再利用が促進されるとは思えません。

何か助けはありますか?ありがとう!

0 投票する
2 に答える
206 参照

asp.net-mvc - ASP.NET MVC3 プロジェクトでポリモーフィック オブジェクトを作成する

私の質問の本質は、MVC3 と Ninject を使用してこれらのオブジェクト (以下を参照) を賢明な方法で構成する方法です (ただし、DI がソリューションで役割を果たすべきかどうかはわかりません)。私のプロジェクトの実際の詳細を開示することはできませんが、問題/質問を説明する近似値を次に示します。VB または C# での回答を歓迎します。

さまざまな特性を持ついくつかの異なる製品がありますが、それらすべてをカタログに表示する必要があります。データベースには、各製品クラスに対応するテーブルがあります。カタログ エントリには、カタログ エントリであることに固有のいくつかのプロパティがあり、その結果、独自のテーブルがあります。DescriptionText プロパティを呼び出すと、基になる具象型に基づいて非常に異なる結果が得られるという意図で、カタログ エントリのインターフェイスを定義しました。

DescriptionText がプレゼンテーション層の問題であることを考えると、製品クラスに ICatalogEntry インターフェイスを実装したくありません。代わりに、それをある種のフォーマッターに委任したいと思います。

コントローラーのどこかに、次のようなコードがあります。

どこかのビューには、次のようなコードがあります。

問題は、コンストラクターがどのように見えるかということです。適切なオブジェクトが適切な場所でインスタンス化されるように設定する方法。ジェネリックまたは DI がこれを助けることができるようですが、私は精神的なブロックを抱えているようです. 私が思いついた唯一のアイデアは、ProductType プロパティを ICatalogEntry に追加し、次のようなファクトリを実装することです。

私見ですが、新しい製品クラスが登場するたびにファクトリを変更する必要があることを除けば、このコードから臭いを感じることはありません。それでも、私の直感では、これは古い方法であり、最近では DI やジェネリックがこれをより適切に行うことができると言っています。これを処理する方法に関する提案は大歓迎です (より良いタイトルに関する提案も同様です...)

0 投票する
1 に答える
1115 参照

c# - c#オブジェクトコンポジション

LetterRectというクラスがあり、2つのフィールドがLetterSquareタイプです。例えば:

square1とsquare2を介してLetterRectオブジェクトへの参照を取得できるようにしたいと思います。私の最初の解決策は、LetterRectと対応するsquare1およびsquare2に長整数の同じidentificationNumberを与えることでした。ただし、識別番号なしでLetterRectにアクセスする方法はありますか?継承関係は絶対にありません。それは構成、つまり「has-a」関係です。Javaで正しく覚えていれば、内部クラスがメンバーであるクラスのインスタンスを直接参照できる内部クラスの概念があります。それで、square1とsquare2を介してLetterRectオブジェクトへの参照を取得するためのより良い方法はありますか?

すべての助けをありがとう!

0 投票する
2 に答える
304 参照

vb.net - vb.net - 継承されたクラスのオブジェクト集約

私はいくつかのオブジェクトの構成で遊んでいます。

私は2つのクラス(ノートとタスク)を持っています。タスクは拡張メモであるため、Task クラスは Note クラスから派生します。

Property Child as list (of note)メモまたはタスクを既存のメモまたはタスクに追加できるため、各メモにはプロパティがあります (したがって、この「子」メモはタスクまたはメモである可能性があります)。

すなわち。

最後の子メモ オブジェクトは実際にはタスクですが、この集計を機能させるにはどうすればよいですか? メモでもタスクでもかまいませんが、基本クラスまたは拡張クラスの機能をリリースしたいと思います。

私がすぐに考えたのは、各オブジェクトにはタスクのリストとメモのリストが必要であるということでしたが、もっと洗練された解決策があるように感じました。

誰もこれについて何か考えがありますか?

0 投票する
8 に答える
19500 参照

python - どのようにPythonクラスのサポートアイテムの割り当てを行うには?

Think Complexityでいくつかのコードを見ているときに、Graphクラスがそれ自体に値を割り当てていることに気付きました。そのクラスからいくつかの重要な行をコピーし、ObjectChildこの動作で失敗するクラスの例を書きました。

さまざまな組み込み型がすべてこれを使用する独自の方法を持っていると確信していますが、これを自分のクラスに組み込む必要があるかどうかはわかりません。それは可能ですか?これは私が気にするべきではないことであり、代わりに単純な構成に頼っていself.l = [1, 2, 3]ますか? 組み込み型以外では避けるべきですか?

「組み込みのpythonコレクションから継承することはほとんどない」と言われたため、質問します。私が自分自身を制限することをためらっているアドバイス。

明確にするために、それは「機能しない」ことを知っておりObjectChild、簡単に「機能」させることができますが、これらの組み込み型の内部の仕組みに興味があり、インターフェイスが の子とは異なりますobject

0 投票する
3 に答える
187 参照

c++ - オブジェクト構成 - オブジェクト プロパティにアクセスできません

こんにちは、オブジェクトの構成に問題があります。クラス CInvoice には内部に CCustomer オブジェクトが必要なので、顧客を必要とするコンストラクターを作成しました。

Invoice.h ファイルには次の行があります。

そして、前述のコンストラクターは次のようになります。

請求書に顧客の名前を印刷しようとすると、ランダムな文字が返されます

オブジェクト構成を適切に実装しましたか?

また、クラス CInvoiceElement があり、それについて質問があります。請求書オブジェクトを作成せずに請求書要素を作成する必要がありますか、それともその逆ですか? どちらがより論理的ですか?

0 投票する
1 に答える
1192 参照

oracle - PL / SQLでオブジェクトコンポジションを使用することは可能ですか?

pl/sqlオブジェクト型を使用してオブジェクトコンポジションを実装する方法を理解しようとしています。これが私の超簡単な例です。

その人(所有者オブジェクト)に学生オブジェクトが含まれていることがわかります。また、学生に個人オブジェクトが含まれていることもわかります(そうでない場合、学生は個人のデータにアクセスできません...そうですか?)

ただし、PL / SQLは、これらのオブジェクトが相互に参照することを嫌い、次のエラーをスローします。

ですから、作曲を通じて生徒を人の一部にする方法についてアドバイスをいただければ、どの人のオブジェクトに属しているのかを生徒に教えてもらえれば幸いです。

ありがとう。

0 投票する
2 に答える
1263 参照

oracle - PL / SQLオブジェクト構成:オブジェクトのインスタンス化/コンストラクタに関する問題

これは、 PL / SQLでオブジェクトコンポジションを使用することは可能ですか?のフォローアップ質問です。

その質問は、相互に依存するPL / SQLでオブジェクト型を作成する方法に対処しました(つまり、各オブジェクトの1つの属性が他のオブジェクトへの参照です)。

私が遭遇した次の問題は、オブジェクトコンストラクターに関係しています。これがコードです(論理的には、学生は人の中に存在します)。また、コメントでこれを排除するために、継承を使用することは私にとってオプションではありません。

人物オブジェクト

学生オブジェクト

このコードは、PERSON内のSTUDENTオブジェクトをインスタンス化するPERSONコンストラクター内の次の行を除いて、エラーなしでコンパイルされます。

これは次のエラーをスローします:

それで、親愛なる友人たち、私はあなたの助けをもう一度求めます。STUDENTコンストラクターに暗黙的に渡される追加のパラメーターがあると推測していますが、それは単なる推測です。

ありがとう。