在UML中,是否可以在组件对象可以访问复合对象的位置绘制聚合?就像在这个图像中,但只有一条关联线,所以触摸A的关联结束时会有一个菱形和一个箭头。如果那是不可能的,我绘制的图表是有效的吗?如果没有,为什么?
从另一个角度来看,可导航性非常重要,可以显示如何在模型中导航以及如何访问实例。
另一点是关于OCL,如果没有定义导航性,一些OCL查询将难以编写。
规范描述(第198页):可导航性意味着可以从协会另一端的实例有效地访问参与运行时链接的实例(关联实例)。实现这种有效访问的精确机制是特定于实现的。如果一端不可导航,则可能会或可能不会从其他端进行访问,如果是,则可能效率不高。
关于Property类(第149页):查询isNavigable()表示是否可以在属性中导航。 body:not classifier-> isEmpty()或association.navigableOwnedEnd-> includes(self)。
因此,建模或不导航非常重要。
如果您希望双方都具有导航功能,则下图显示:
但是在规范的第6节中,它写成:
所以下面的模式与上面的模式相同。这很棘手,但似乎是真的。
当然这是可能的。
如果要节省空间,可以使用单行进行关联:
以下是我对导航性的个人看法:不需要导航箭头,因为qazxsw poi属性的存在已经暗示了这一点。
第110页规格:
当Property通过ownedAttribute由Association之外的分类器拥有时,它表示分类器的属性。
第200页:
根据非正式惯例,过去经常使用导航符号,其中假定非导航端由协会拥有,而假定可导航端由对方的分类器拥有。现在不推荐使用此约定。聚合类型,导航性和最终所有权是单独的概念,每个概念都有自己的显式表示法。类所拥有的关联端始终是可导航的,而关联所拥有的关联端可以是可导航的或不可导航的。
但是什么是刚刚命名的协会?到目前为止,这是一个无用的结构。你打算最终在任一类中创建属性 - 通过属性,在这种情况下你添加这个(新)点。对我来说,这只是过度构建和不切实际的。谁真的在使用那些点?在EA中,您必须打开子菜单才能显示它们。对于我(可能是大多数UML读者),角色名称表示属性,而这是另一方面的属性。这就是这个命题背后的“(我的)人类逻辑”。所以,我的实际方法:
就是这样。只要忘记那些难以产生的愚蠢点(在EA中)和b)更难以识别。
再一次:这里的最后一部分是我对实际建模的建议。