2011-12-02 2 views
3

스포츠 클럽 행정을위한 응용 프로그램을 개발 중입니다. 그리고 내 문제는 하나의 기본 클래스 Member을 상속받은 CoachPractitioner 두 개의 다른 클래스 (이름, 성, 성 ...)가 모두 포함 된 기본 클래스 Member입니다. 코치는 몇 가지 특정 속성을 가지고 있습니다. (월급, 현행 교육 ...) 실무자가 다른 사람을 가지고 있습니다 (isCompetitor, category ...)역할에 따라 클래스 만들기

문제는 Practitoner가 트레이너가 될 수도 있고 다른 방향으로. 같은 사람에 대해 두 개의 항목을 갖는 것이 더 나은 것으로 어떻게 모델링 할 수 있습니까?

편집 : 지금

Class Member {} 
Class Coach:Member {} 
Class Practitioner:Member {} 
+0

나는 트레이너와 코치가 같은 종류의 회원이라고 생각합니까? – bAN

답변

2

한 번에 한 가지 방법으로 만 - 실무자 그룹 중 하나 또는 강사 그룹 중 하나로 - 그 회원을 특정 유형으로 만들 수 있습니다. 한 번에 볼 수 있습니다. 필요한 경우 부울 속성 "IsTrainer"를 실무자에게 추가하고 "IsPractitioner"를 트레이너에 추가하여 다른 사람에 대한 추가 정보가 있음을 나타낼 수 있습니다.

이것은 한 번에 한 가지 방법으로 만 볼 수 있으며 해당 인물에 대한 모든 정보가 포함 된 페이지가 표시되지 않는다고 가정합니다.

+0

그래, 그건 사실이야 ... 그들은 오직 한 시간에 다른 트레이너 나 개업의가 될 수있다. –

4

보이는 당신은 역할의 목록을 포함하는 하나 개의 클래스의 멤버 '를 만들 수있는 방법이있다. 각 역할 (코치 및/또는 실무자)은 회원 클래스에있는 모든 속성을 포함하는 기본 클래스 '역할'을 상속합니다. 코치와 실무자는 그들 자신의 구체적인 성격을가집니다. 따라서 :

public class Member { 

    public IList<Role> Roles { get; private set; } 

    public Member(){ 
     Roles = new List<Role>(); 
    } 

} 

public class Role { 

    public string SomeGlobalProperty { get; set; } 

} 

public class Coach : Role { 

    public string SomeSpecificProperty { get; set; } 

} 

public class Practitioner : Role { 

    public string SomeSpecificProperty { get; set; } 

} 
1

SImeple : OOP에 소개 책을 basiaclly 읽을 필요가 있음을 알 수 있습니다.

회원은 회원이며 논쟁의 여지가 있습니다. 실제로 회원이 무엇인지에 관계없이 당사자입니다.

기본적으로 역할의 컬렉션 인 시작점과 끝나는 역할이 서로 다른 역할을합니다.

Party 
    CoachInformation 
    PractitionerInformation 

내가는 "데이터 모델 자료집"을 읽어 보시기 바랍니다는 볼륨 1 - 그들은이 표준 문제에 대해 훌륭한 세부 사항에 가서 어떻게 대부분의 사람들은 오해.

+0

내가 볼 수있는이 문제의 이름이 있습니까? –

관련 문제