假设我们想要为医生的患者建模:患者有处方病史,预约历史,检测结果历史......这些项目本身就是一个清单。
创建患者类的最佳方法是什么?
class MyPatient{
List<Prescription> Prescriptions {get;set;}
List<Appoints> Appoints {get;set;}
...
}
class Prescription{
string PrescripName {get;set}
int Dosage {get;set}
}
class PatientAppoint{...}
这就是我的想法;如果您有任何建议,请告诉我。
答案 0 :(得分:2)
在设计课程时需要考虑很多事项:
继承与构成 - 使用“是A”和“有A”。
例如,Car
是 Vehicle
。 Car
有一个 Engine
。
不要将一堆垃圾扔进一个班级,试图让它适用于另一个班级。
例如,如果您需要处方历史,您可能需要处方和日期。但是,如果日期不适合,请不要将日期投入处方,而是将其扩展到继承处方的新PrescriptionHistoryItem类。
从抽象表示或合同表示开始,然后构建它。如果没有必要,你不需要保留任何抽象类或接口,但它们可能会帮助你在那里。
基本上,有很多事情要考虑,这个问题很开放。有太多的设计模式和主题需要考虑,这是有争议的。总的来说,您的类层次结构/设计看起来很好。
答案 1 :(得分:0)
不是将所有类保存在文件中,而是为每个具有相同名称的类创建一个单独的文件。未来的程序员很容易调试,或者理解起来会非常干净。
答案 2 :(得分:0)
是的,这是在OOP中表示这些对象的一种非常标准的方式。您的患者与处方和预约有一对多的关系,因此您的患者课程各有一组。在设计类结构和布局时,您可能希望了解如何将数据(数据库我假设)保留下来。
答案 3 :(得分:0)
这是模型在运行时可能出现问题的一个很好的例子。当你开始画出这一点时,你最终可能会在某个时刻收集一些患者。如果您有数据适配器来构建患者,并将处方,访问,测试等历史记录到患者类别中,那么患者的集合最终可能会变得非常大。现在,如果通过网络(例如,在WCF服务和客户端之间)传输此大型集合,则可能会变得繁重。例如,如果您只是显示患者列表......
所以在我看来,我会从略高的层面看一下系统,并考虑我上面提到的一些事情。如果您打算在其中包含500名患者的集合,那么我可能会考虑一种模型,允许我在必要时将患者与“项目”历史联系起来,但也可以在需要时将它们分开......
在我看来,这会影响模型,因为我不喜欢设计一个类,当数据适配器构建实例时,字段的数量是任意的,也就是说,有时它会填充它们有时它不会' t ...但我之前已经做过......;)