班级之间的关系

时间:2010-09-13 13:19:17

标签: uml class-diagram

我有四个班级:

  • 员工 - 仅包含字段 保持关于特定的信息 雇员

  • EmployeeGroup - 仅包含字段 其中描述了员工类型 可以做到,每个员工都属于一个 EmployeeGroup类。

  • EmployeeDBase - 包含方法 添加或获得员工和 来自数据库的员工组。

  • EmployeeForm - 使用EmployeeDbase方法 获取或添加Employee或EmployeeGroup 字段到数据库。它也有它 自己的显示方法 信息形式。

我认为Employee和EmplyeeGroup之间的关系是agregation,并且在EmplyeeForm和EmployeeDBase之间存在依赖关系。是否有任何关系Employee和EmployeeForm,Employee和EmplyeeDBase(因为两者都使用Employee对象).---

2 个答案:

答案 0 :(得分:0)

你的问题听起来有点......理论上的。几乎像家庭作业。

对于它的价值,我认为你不应该混淆员工和员工。 EmployeeGroup类 - 它们是现实世界实体的明确表示,EmployeeDBase和EmployeeForm是您应用程序内部的软件工具。

答案 1 :(得分:0)

一般同意@Benjol。这里有两种不同的关系。员工< - > EmployeeGroup是一个“域”关系,即反映问题空间的规则和特征。因此,最适合作为标准关联进行建模 - 许多:1如果员工只能成为一个组的成员,那么很多:否则很多。说实话,我不会对聚合感到困惑。基数更重要。

其他关系是架构而非域源。我会单独记录 - 最好是参考一个或多个架构模式。看看Martin Fowler's catalogue的好例子。

最后,有两点意见:

  1. 根据您的描述,设计看起来像是Employee& EmployeeGroup是EmployeeForm和EmployeeDBase中具有所有业务逻辑的简单值对象。我一般都怀疑将域逻辑移出域类。有时候它是合理的 - 通常用于非常简单/快速的黑客系统。任何具有任何重要域逻辑的东西 - 和/或预期具有非平凡的生命周期 - 通常更容易维护,如果域逻辑更好地用域类封装而不是绑定在ui或db层中。 (参见Eric Evans的“领域驱动设计”)。
  2. “EmployeeGroup”不是最具信息性的名称。根据您的描述,它将更好地命名为“EmployeeRole”或类似的东西。看起来就像书中定义的那样,所以不能改变。