背景:我有一个抽象类 学生 。在本课程中,我推导出三个具体的课程 SchoolStudent,UnderGradStudent , PostGradStudent 。我有另一个班车辆。学校学生必须不驾驶车辆,然而,本科生或研究生可能会或可能不会驾驶车辆。但是每辆车都必须由某人驾驶,因此车辆课程可以引用学生。
问题:我之间有关联类 UnderGradStudent&车辆和 PostGradStudent&车辆即可。但是,我对多重性感到有些困惑。
但是,我怀疑上图显示每个广告将有一个 UnderGradStudent 以及一个 PostGradStudent 。
上图是否正确我想要对应于上下文的模型?
答案 0 :(得分:2)
当你绘制这个UML图时,它暗示(但没有正确说明)Vehicle
必须由一个UnderGradStudent
和一个{{PostGradStudent
驱动1}}。它还意味着UnderGradStudent
可以驱动任意数量的Vehicle
,而PostGradStudent
可以驱动任意数量的Vehicle
(同时)。我不认为那是你的意图。我说“暗示”的原因是你在一端覆盖了两个关联。最后我查了一下,这是无效的UML。
我想您想说Vehicle
可能最多由一个Undergrad Student
或Postgrad Student
驱动。要说,我推荐以下型号:
这说的是:
Student
的有效实例必须是School Student
,Undergrad Student
或Postgrad Student
之一(而不是多重分类)Allowed Driver
的有效实例必须是Undergrad Student
或Postgrad Student
之一(而不是多重分类)Vehicle
最多可由Allowed Driver
(一次)驱动Allowed Driver
最多可驱动一个Vehicle
(一次)这描述了任何时间点的有效情况,这非常有用。可以将其视为评估电影中任何帧的有效性的一种方式。
如果您需要记录所有车辆的所有驱动程序,您需要进行许多更改。 Person
实际上扮演Student
(通常是其他角色)的角色,并且该角色可能会随着时间的推移而发生变化。您需要记录每个角色更改的开始和结束时间以及每个驾驶员/车辆更换的开始和结束时间。可以将其视为录制电影中的所有帧,但无法表达电影中任何给定帧的有效性。当你放松多重性时,你会失去这种能力。
您可以通过结合我提到的所有关联的所有来获得“单帧”和“整部电影”方法的好处。
答案 1 :(得分:1)