我正在尝试为我的项目管理软件绘制类图 描述以下内容。它包含以下类:
Project
-软件项目ProjectManager
-管理项目的他/她Employee
-从事项目工作的人以及以下关系/关联:
一个项目经理可能必须管理多个项目,而一个项目只能由一个项目经理进行管理
项目经理可以将员工分配给他/她管理的项目
对于上面的关联,我创建了这个类图:
ProjectManager
和Project
之间)建模答案 0 :(得分:3)
您的问题与上面在我的公司BITPlan的UML培训中使用多年的示例很接近。
在此示例中,存在一个ProjectAssignment类,并且规则是,对于每个时间点,可能只有一个ProjectAssignment具有“ responsible = true”。拥有此ProjectAssignment的员工是ProjectManager。当子项目开始起作用时,您也可以应用这种样式,并且您希望对整个管理器的层次结构进行建模,该层次结构可能会随时间而变化。
我个人认为,在模型的文档中陈述散文的这种限制通常要好得多,而不是尝试使用继承和基数在结构中显示出来。
答案 1 :(得分:1)
您只需向Project
添加名为assignEmployee
的操作,该操作会将员工添加到其分配的员工列表中:
目前尚不清楚如何分配员工,无论是分配给一个还是多个项目。另外,您可能需要取消分配操作。
当然,您也可以使用@WolfgangFahl建议的关联类。
答案 2 :(得分:0)
对问题建模的更通用方法是为项目经理和员工使用对象类型Person
(或Employee
)。这表示项目经理也是雇员,可以分配给某些项目作为经理,而可以分配给其他项目作为普通员工。
在这种方法中,您将拥有两个类Employee
和Project
,它们之间具有两个关联:
Employee
-为Project
工作(或最好在关联端使用worker
之类的角色名称)。Employee
是Project
的管理者,其中manager
是角色名称。如果您确实需要建模/记录项目经理对项目员工的分配,则需要用三元关联替换第一个关联(Employee
-works-for-Project
) Employee
按Project
按Employee
分配给assigner
,其中后一个雇员(分配者)必须是分配者的经理项目。可以通过附加到Employee
类的相应不变捕获此条件。