我正在开发一个体育俱乐部管理的应用程序。我的问题是,我有一个包含所有“默认”信息(姓名、姓氏、性别……)的主类Member。以及另外两个继承自Member的类Coach和Practitioner。教练有一些特定的属性(工资,当月进行的培训...)从业者有一些其他的(isCompetitor,类别...)
问题是,实践者也可以是培训者,反之亦然。我怎样才能把它建模成比同一个人有两个条目更好的东西呢?
编辑:这是它现在的样子
Class Member {}
Class Coach:Member {}
Class Practitioner:Member {}发布于 2011-12-02 16:32:17
如果你一次只以一种方式看待他们--作为一组从业者中的一员,或者作为一组培训师中的一员--那么你可以将他们创建为他们同时被查看的特定类型的成员。如果需要,您可以将布尔型属性"IsTrainer“添加到实践者,将"IsPractitioner”添加到trainer,以指示在其他位置有关于该人员的更多信息。
这假设你一次只以一种方式看着他们,而不是得到一个包含所有关于这个人的信息的页面。
发布于 2011-12-02 16:29:33
您可以创建一个包含角色列表的类“member”。每个角色(教练和/或实践者)都继承自一个基类' role‘,该基类包含您现在在成员类中拥有的所有属性。教练和实践者都有自己的特定属性。所以:
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; }
}发布于 2011-12-02 16:30:38
SImeple:认识到你基本上需要把一本入门书读进OOP。
一个成员就是一个成员(即使是这样也是有争议的--实际上它是一个政党,不管它做什么)。
它有不同的角色,基本上是角色的集合,都有开始和结束日期。
Party
CoachInformation
PractitionerInformation等。
我建议阅读"The Data Model Resource Book",第一卷-他们详细介绍了这个标准问题以及大多数人是如何弄错的。
https://stackoverflow.com/questions/8353575
复制相似问题