2012-04-19 39 views
-2

私は銀行口座をシミュレートするはずのプログラムに取り組んでいます。私は "投資"と呼ばれる私の基底クラスと "Stock"と "MutualFund"という2つのサブクラスを持ち、基底クラス "投資"に関連した "CustomerAccount"というクラスも持っています。 This is a picture of the classes and how they should be set upクラスの関連付け

CustomerAccountクラスをInvestmentクラスに関連付ける方法がわかりません。

+0

私はそれがUMLだと仮定? –

+0

これはC#とどのように関連していますか? – Msonic

+0

@james: 'CustomerAccount'は' Investment'sのリストを持っています。 –

答えて

0

アカウントにはAddStockAddMutualFundがあるのではなく、ちょうどAddInvestmentである必要があります。これはその後、株式または発明のいずれかを追加するために使用されます。すべての株式やミューチュアルファンドを受け取るのではなく、すべてInvestmentになります。

+0

'List invest'を保ち、' AddInvestment() 'は' invest.Add(theNewInvestment) 'です。それは2つのクラスがあるべき「関連する」ものである。 –

+0

@ jb。 OPは彼がその後削除した別のスレッドを投稿した。その中で彼は既に 'List 'を持ったコードを掲示し、与えられた方法で期待どおりに使用しました。彼がすでにそれを知っていることを知って、私はここでそれを言及しなかった。 – Servy

1

CustomerAccountクラスには、InvestmentとのCanHave関係があります。

CustomerAccountクラスでは、投資のコレクションを作成します。リストを使用してこれを達成することができます。

List<Investment> _investments; 

コンストラクタでリストを初期化することを忘れないでください。

_investments = new List<Investment>(); 

編集:

リストをループ:

foreach Investment invst in _investments 
{ 
    if (invst.GetType() == typeof(Stock)) { } 
    else if (invst.GetType() == typeof(MutualFund)) { } 
} 
+0

さて、私はそれを行う方法を理解しています。それは私がしなくてはならないことですか? –

+1

なぜなら、あなたがUMLから1分ほど前に戻って現実世界を考えれば、人々は複数の投資をすることができるからです。それらを追跡する1つの方法は、投資のリストを保持することです。投資を個別にトラッキングする場合は、各サブクラスタイプのリストを作成することができます。それは少し簡単かもしれません。なぜなら、投資のリストを反復する場合、投資のタイプを決定し、それをそのタイプにキャストして、サブクラス固有のプロパティとデータにアクセスできるようにする必要があるからです要素。 – darin

関連する問題