在c#中设计类

时间:2011-03-29 04:33:57

标签: c#

假设我们想要为医生的患者建模:患者有处方病史,预约历史,检测结果历史......这些项目本身就是一个清单。

创建患者类的最佳方法是什么?

class MyPatient{
   List<Prescription> Prescriptions {get;set;}
   List<Appoints> Appoints {get;set;}
   ...
}

class Prescription{
   string PrescripName {get;set}
   int Dosage {get;set}
}

class PatientAppoint{...}

这就是我的想法;如果您有任何建议,请告诉我。

4 个答案:

答案 0 :(得分:2)

在设计课程时需要考虑很多事项:

  1. 继承与构成 - 使用“是A”和“有A”。

    例如,Car VehicleCar 有一个 Engine

  2. 不要将一堆垃圾扔进一个班级,试图让它适用于另一个班级。

    例如,如果您需要处方历史,您可能需要处方和日期。但是,如果日期不适合,请不要将日期投入处方,而是将其扩展到继承处方的新PrescriptionHistoryItem类。

  3. 从抽象表示或合同表示开始,然后构建它。如果没有必要,你不需要保留任何抽象类或接口,但它们可能会帮助你在那里。

  4. 基本上,有很多事情要考虑,这个问题很开放。有太多的设计模式和主题需要考虑,这是有争议的。总的来说,您的类层次结构/设计看起来很好。

答案 1 :(得分:0)

不是将所有类保存在文件中,而是为每个具有相同名称的类创建一个单独的文件。未来的程序员很容易调试,或者理解起来会非常干净。

答案 2 :(得分:0)

是的,这是在OOP中表示这些对象的一种非常标准的方式。您的患者与处方和预约有一对多的关系,因此您的患者课程各有一组。在设计类结构和布局时,您可能希望了解如何将数据(数据库我假设)保留下来。

答案 3 :(得分:0)

这是模型在运行时可能出现问题的一个很好的例子。当你开始画出这一点时,你最终可能会在某个时刻收集一些患者。如果您有数据适配器来构建患者,并将处方,访问,测试等历史记录到患者类别中,那么患者的集合最终可能会变得非常大。现在,如果通过网络(例如,在WCF服务和客户端之间)传输此大型集合,则可能会变得繁重。例如,如果您只是显示患者列表......

所以在我看来,我会从略高的层面看一下系统,并考虑我上面提到的一些事情。如果您打算在其中包含500名患者的集合,那么我可能会考虑一种模型,允许我在必要时将患者与“项目”历史联系起来,但也可以在需要时将它们分开......

在我看来,这会影响模型,因为我不喜欢设计一个类,当数据适配器构建实例时,字段的数量是任意的,也就是说,有时它会填充它们有时它不会' t ...但我之前已经做过......;)