有关项目管理中关系类型的UML类图

时间:2018-10-30 08:03:48

标签: class oop uml associations ooad

我正在尝试为我的项目管理软件绘制类图 描述以下内容。它包含以下类:

  • Project-软件项目
  • ProjectManager-管理项目的他/她
  • Employee-从事项目工作的人

以及以下关系/关联:

  1. 一个项目经理可能必须管理多个项目,而一个项目只能由一个项目经理进行管理

  2. 项目经理可以将员工分配给他/她管理的项目

对于上面的关联,我创建了这个类图:

enter image description here

  • 很清楚如何为第一个关联(ProjectManagerProject之间)建模
  • 我不知道如何为第二个关联建模
    如何实施项目经理只能将项目分配给他负责管理的员工?

3 个答案:

答案 0 :(得分:3)

Example

您的问题与上面在我的公司BITPlan的UML培训中使用多年的示例很接近。

在此示例中,存在一个ProjectAssignment类,并且规则是,对于每个时间点,可能只有一个ProjectAssignment具有“ responsible = true”。拥有此ProjectAssignment的员工是ProjectManager。当子项目开始起作用时,您也可以应用这种样式,并且您希望对整个管理器的层次结构进行建模,该层次结构可能会随时间而变化。

我个人认为,在模型的文档中陈述散文的这种限制通常要好得多,而不是尝试使用继承和基数在结构中显示出来。

答案 1 :(得分:1)

您只需向Project添加名为assignEmployee的操作,该操作会将员工添加到其分配的员工列表中:

enter image description here

目前尚不清楚如何分配员工,无论是分配给一个还是多个项目。另外,您可能需要取消分配操作。

当然,您也可以使用@WolfgangFahl建议的关联类。

答案 2 :(得分:0)

对问题建模的更通用方法是为项目经理和员工使用对象类型Person(或Employee)。这表示项目经理也是雇员,可以分配给某些项目作为经理,而可以分配给其他项目作为普通员工。

在这种方法中,您将拥有两个类EmployeeProject,它们之间具有两个关联:

  1. 关联Employee-为Project工作(或最好在关联端使用worker之类的角色名称)。
  2. 关联EmployeeProject的管理者,其中manager是角色名称。

如果您确实需要建模/记录项目经理对项目员工的分配,则需要用三元关联替换第一个关联(Employee-works-for-ProjectEmployeeProjectEmployee分配给assigner,其中后一个雇员(分配者)必须是分配者的经理项目。可以通过附加到Employee类的相应不变捕获此条件。