2017-12-11 4 views
0

で継承/組成構造を作成する私は、次のような状況へのアプローチにアドバイスを探しています。同期コードを減らすために、継承構造が役立つと思います。このモデルを作成する理想的な方法についての推奨事項、または私に似たような例を指摘してください。Javaの

モデルを以下に示します。

いくつかの祖父母があります。 GrandParentは複数の親を持つことができ、同様に親は複数の子を持つことができます。親/子のためのものとIncomeStatementsのものの2つの "継承"構造があるようです。

「grandIncomeStatement」と「parentIncomeStatementは、」その子の累積損益計算書だけでなく、独自の損益計算書です。彼らは、 "myIncomeStatement"に何らかの変更があるときは常に同期しなければなりません。 IncomeStatementsへの各レベルで -

今のところ、私が作成した変更の周りの任意の継承と書かれたコードなしに共通の属性を持っている「クラスは、(損益計算書)IS」。

class GrandParent { 
    ObjectIS myIncomeStatement; 
    ObjectIS grandIncomeStatement; 
} 
class Parent { 
    ObjectIS myIncomeStatement; 
    ObjectIS parentIncomeStatement; 
} 
class Child { 
    ObjectIS myIncomeStatement; 
} 
+0

代わりObjectIsを使用しての、あなたは常に多型を使用することができます後で 'instance of '演算子を使用すると、動的バインディングが正しい関数を呼び出すため、btwをチェックすることができます。 –

+0

Javaにこのような"クラス "宣言はありません。小文字の" class .... "でなければなりません。 @JorgeCampos。 –

+1

編集の問題。変更を加えました。 – userDSSR

答えて

2

異なるアプローチは、Personとそれが子供のリストを持つことです。

public class Person { 
    List<Person> children; 
    ObjectIS myIncomeStatement; 
    ObjectIS familyIncomeStatement; 

    public ObjectIS getFamilyIncomeStatement() { 
     ObjectIS is = new ObjectIS(); 
     for(Person p: children) { 
      is.income += p.familyIncomeStatement.income; 
     } 
     is.income += this.myIncomeStatement.income; 
     return is; 
    } 
} 

// sample objectIS class 
public class ObjectIS { 
    private int income; 
} 

編集:だから、あなたはおそらくfamilyIncomeを計算する再帰的な方法を持つことができます(あなたは明らかに、適切なゲッター/セッターをより厳密なアクセス制御を必要があります)

+0

ありがとう@ajc。これは動作します。家族をモデル化する方法がある - 。。アソシエーションが子供損益計算書の変更だけでなく、独自の損益計算書で(維持されているか、累積損益計算書は、損益計算書を同期さ再帰ロジックを記述するために – userDSSR

+0

編集した私の答え.. – ajc

+0

ありがとう@ajc。これは私にとってはうまくいくはずです。 – userDSSR

関連する問題