2012-04-19 9 views
-1

StandardMidiFileオブジェクトを作成しようとしています。オブジェクト とTrackChunkオブジェクトが含まれています。OOP、オブジェクトのコンストラクタ内の別のオブジェクトのゲッターメソッドを呼び出すことをお勧めしますか?

TrackChunkオブジェクトにはMidiEventオブジェクトが含まれます。

オブジェクトを作成すると、StandardMidiFileオブジェクトが作成されます。 他のオブジェクトを含む&を構築するコンストラクタが必要です。

しかし、TrackChunkオブジェクトが作成されると、すべてのMidiEventの合計長をバイト単位で決定するGUI-UserControlクラスでgetterメソッドを呼び出す必要があります。 この値はTrackChunkの構築に使用されます。

コンストラクタ内でメソッドを呼び出すのは良いOOPプラクティスですか?

+5

です。例を追加してください。 –

+1

おそらく、あなたはこの質問をなぜ...? –

+0

ゲッターメソッドを定義する.... – Exitos

答えて

1

私は、トラック長をコンストラクタパラメータとして渡します。

class StandardMidiFile 
{ 
    HeaderChunk header; 
    TrackChunk track; 

    public StandardMidiFile() 
    { 
     var trackLength = // call GUI-UserControl class to get value 
     header = new HeaderChunk(); 
     track = new TrackChunk(trackLength); 
    } 
} 

class HeaderChunk 
{ 
    // blah blah blah 
} 

class TrackChunk 
{ 
    // blah blah blah 

    public TrackChunk(var trackLength) 
    { 
     // Do stuff here. 
    } 
} 

もちろん、残りのデザインによって異なります。 TrackChunkがStandardMidiFileで使用されるオブジェクトのみになるように意図されている場合、これは私にとって理にかなっています。どちらの方法も「正しい」と私は信じています。

+0

お返事ありがとうございました。 – theIrishUser

0

あなたが何かできることがあるからといって、あなたがすべきことではありません。おそらく質問に展開し、例を挙げてください。それはあなたの答えに役立ちます。

+4

代わりにコメントセクションに入るはずです – GETah

+0

例が追加されました – theIrishUser

2

一般的には良いことも悪いこともありません。それが良いか悪いかの特定の状況があります。 「悪い」ものを見つけることはもう少し難しくなります。本質的にこのアイデアに間違ったものは何もありません。

+0

私の例を追加しました:D – theIrishUser

+0

この例ではどのような問題がありますか?それは良い考えであるかどうかあなたに質問しますか? – Servy

+0

私はそれが良いOOPの練習かどうか疑問に思っています。 – theIrishUser

2

オブジェクトを別のオブジェクトに応じて初期化したい場合は、これが正しいことと思われます。例えば、あなたが 'Settings'クラスを持っているならば、多くの新しいインスタンスが自身の内部フィールドにアクセスして自分自身を初期化する方法を知ることができます。
一般的に、これは必ずしも常に良いものでも悪いものでもありません。通常プログラミングでは、特定の状況に依存します。

関連する問題