2011-12-02 37 views
3

我正在为体育俱乐部管理部门开发应用程序。而我的问题是,我有一个主要类Member,其中包含所有“默认”信息(名称,姓氏,性别......)和其他两个类CoachPractitioner,它们继承自Member。教练有一些特定的属性(薪水,本月举办的训练......),练习者有其他一些东西(isCompetitor,category ...)根据角色创建班级

问题是练习者也可以是训练师,另一种方式。我怎样才能将这个模型建模成更好的方式,然后为同一个人创建两个条目?

编辑:这是它的外观现在

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的介绍书。

一位会员是会员(甚至是有争议的 - 无论它是什么,它都是一个党)。

它有不同的角色,基本上是角色的集合,所有角色都有开始和结束日期。

Party 
    CoachInformation 
    PractitionerInformation 

我建议您阅读“的数据模型资源手册”,第1卷 - 他们详谈了这个标准的问题,大多数人怎么会弄错。

+0

有没有可以查找这个问题的名称? –