根据角色创建类

时间:2011-12-02 08:26:06

标签: c# oop

我正在为体育俱乐部管理开发一个应用程序。我的问题是我有一个主要类Member,其中包含所有“默认”信息(姓名,姓氏,性别......)和其他两个继承的CoachPractitioner类来自Member。教练有一些特定的属性(工资,当月举办的培训......),从业者有其他人(isCompetitor,category ...)

问题在于,练习者也可以是训练师,也可以是其他方式。我如何将其建模为比同一个人有两个条目更好的东西?

编辑:这就是它现在的样子

Class Member {}
Class Coach:Member {}
Class Practitioner:Member {}

3 个答案:

答案 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 :(得分:2)

如果您一次只以一种方式看待它们 - 作为一组从业者之一,或作为一组培训师之一 - 那么您可以将它们创建为他们所属的特定类型的成员一次看。如果需要,您可以向从业者添加布尔属性“IsTrainer”,向培训师添加“IsPractitioner”,以表明在其他地方有更多关于该人的信息。

这假设您一次只能以一种方式查看它们,而不会获得包含该人的所有信息的页面。

答案 2 :(得分:1)

SImeple:意识到您基本上需要将一本介绍书读入OOP。

会员是会员(即使是有争议的 - 但无论做什么,它都是一个党派。)

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

Party
  CoachInformation
  PractitionerInformation

我建议阅读&#34;数据模型资源手册&#34;,第1卷 - 他们会详细介绍这个标准问题以及大多数人如何弄错。