2017-12-11 12 views
0

다음 상황에 대한 조언을 찾고 있습니다. 나는 상속 구조가 동기화 코드를 줄이는데 도움이 될 것이라고 생각한다. 이 모델을 만드는 이상적인 방법에 대한 권장 사항이나 비슷한 예를 보여줍니다.Java에서 상속/합성 구조 만들기

모델은 다음과 같습니다.

몇 명의 할아버지가 있습니다. GrandParent는 여러 명의 부모를 가질 수 있으며 유사하게 부모는 여러 명의 자식을 가질 수 있습니다. 두 가지 "상속"구조가 있는데, 하나는 학부모/아동용이고 다른 하나는 "IncomeStatements"구조입니다.

"grandIncomeStatement"및 "parentIncomeStatement"는 해당 IncomeStatement뿐만 아니라 Children의 누적 소득 계산서입니다. "myIncomeStatement"에 변경이있을 때마다 동기화해야합니다.

지금은 모든 상속 및 변경 사항을 기록한 코드가없는 공통 속성을 가진 "클래스 IS (IncomeStatement)"를 만들었습니다. 각 레벨의 IncomeStatements를 참조하십시오.

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

(당신은 분명히 엄격한 액세스 제어, 적절한 게터/세터를해야합니다) 당신은 항상 다형성을 사용할 수 있습니다 그런 다음'instance of '연산자를 사용하면 동적 바인딩이 올바른 함수를 호출 할 것이므로 btw를 확인할 수 있습니다. –

+0

Java에서 이러한 "클래스"선언은 없으며 "class ...."소문자 여야합니다. –

+1

@JorgeCampos. 편집 문제. 변경했습니다. – 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을 계산하는 재귀 적 방법이 있습니다 그래서, 대신 ObjectIs를 사용

+0

감사합니다. @ajc. 이것은 효과가있다. 가족을 모델링하는 방법 또는 연계가 유지되는 누적 손익 계산서 (자녀 손익 계산서와 그 자신의 손익 계산서가 변경됨) 소득 계산서를 동기화하기 위해 재귀 논리를 작성하십시오 – userDSSR

+0

편집 됨 my 대답 .. – ajc

+0

고마워요 @ajc.이 날 위해 작동합니다. – userDSSR