我正在为体育俱乐部管理开发一个应用程序。我的问题是我有一个主要类Member
,其中包含所有“默认”信息(姓名,姓氏,性别......)和其他两个继承的Coach
和Practitioner
类来自Member
。教练有一些特定的属性(工资,当月举办的培训......),从业者有其他人(isCompetitor,category ...)
问题在于,练习者也可以是训练师,也可以是其他方式。我如何将其建模为比同一个人有两个条目更好的东西?
编辑:这就是它现在的样子
Class Member {}
Class Coach:Member {}
Class Practitioner:Member {}
答案 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卷 - 他们会详细介绍这个标准问题以及大多数人如何弄错。