当我们要求绘制类图时,大多数示例都会识别系统的域类并显示它们之间的关系。但它也显示了这些域类中的业务方法。通常,域类在应用程序中充当DTO,并且应该只有字段并且getter和setter都知道。
例如Doctor
是一个域类。如果是这样,我们不能让方法createPrescription()
正确吗?
该方法应该在其他一些使用域类Doctor
的商业impl类中吗?
检查以下链接以获取绘制的类图。
http://umldiagramtutorial.blogspot.com/2012/10/hospital-management-system-class-diagram.html
我所说的是Doctor
域类不应该使用这些方法,而应该在DoctorMgtImpl
类中。这是对的吗?
答案 0 :(得分:1)
这更像是设计/ OOP问题,而不是UML问题。如果您坚持SOLID原则,那么您的观点是正确的:他们对一个对象(医生)负有不同的责任。此外,Doctor
不是抽象,而是非常具体的东西。
另一方面,此类模型可让您高度概述系统中活动的实体,它们的功能以及它们的交互方式。然后可以使用不同的类(使用MVC,添加接口等)实现此图。 UML图是实现的初始点,但实现不(并且大部分时间)不应该完全如图所示(因为那么为什么要实现?只是从图中生成)。 / p>
答案 1 :(得分:1)
我同意@vainolo,你的问题只与实施有关。我推荐了一个项目,其实体与此hospital management system非常相似。您可以看到我们使用的主要实体,并且我们没有将所有DTO,DAO放在顶级类图中。关于实现,我们采用的体系结构是:持久域模型类(ex Doctor.java),用于处理具有编码器友好CRUD操作的持久类的DAO,使用带有接口和实现的DAO的无状态业务层(“管理器”) ,控制者使用经理。模拟所有这些类需要几天时间。我们认为您的UML类图的目的不是代表代码。我建议这样做:)