谁是关系的所有者?

时间:2015-07-04 11:09:18

标签: uml

根据UML规范,每个Element都可以拥有一个所有者。他/是否拥有所有者取决于方法mustBeOwned(): Boolean,默认情况下为true(请参阅specs中的7.8分类器说明)。

如果某个元素被其所有者完全包围(例如包中的类),那么这一点非常明显。

然而,对于关系(正常,指导,概括......),我没有找到任何规范。是"来源" (至少是针对性的)也是主人?

它是所有权链中的第一个共同所有者吗?因此,例如,在同一个包中的两个类之间的关联,该关联的所有者将是包。

或者它只是没有定义,它可以是我想要的任何东西?

enter image description here

3 个答案:

答案 0 :(得分:1)

老实说,上层建筑的术语定义仍然很差。

仔细观察它会更糟(引自ppt 13-09-05)。

关系(第15页)

  

关系是指定其他元素之间某种关系的元素。关系的后代提供了与它们所代表的概念相适应的语义。

连接器(第235页)

  

连接器指定启用两个或多个实例之间通信的链接。与关联(用于指定关联分类器的任何实例之间的链接)相比,连接器仅指定播放连接部分的实例之间的链接。

我不知道他们两者之间存在差异。看起来很挑剔。

协会(第206页)

  

关联对一组元组进行分类,这些元组表示类型化实例之间的链接。 AssociationClass既是一个关联又是一个类。

没有提到Relationship是父母。

现在寻求有关owner

的真相

所有者(第37页)

  

/ owner:Element [0..1] {union}(与Element :: ownedElement相对)拥有此Element的元素。

mustBeOwned (有点失望)

  

mustBeOwned():Boolean   查询mustBeOwned()指示此类型的元素是否必须拥有所有者。不需要所有者的Element子类必须覆盖此操作。

所以这里除非读到

,否则会被卡住

协会(第209页)

  

关联分类器结束的关联所有权可以通过一个小的实心圆圈以图形方式表示,为简洁起见,我们将其称为一个点。点将被绘制为线的图形路径的整体,在它与分类符相交的点处,插入到行的末尾和表示分类器的节点的一侧之间。点的直径不得超过聚合金刚石高度的一半,并且应大于线的宽度。这避免了与填充的钻石符号的视觉混淆,同时确保它可以与线条区分开。该点表示该模型包括由点所触及的分类器表示的类型的属性。此属性由另一端的分类器拥有。在这种情况下,从拥有的分类器的属性区域中抑制属性是正常的。

?回答

很可能(!)连接器没有mustBeOwned约束,可以拥有,在这种情况下,您将看到2.5引入的点。否则他们可能不归。

答案 1 :(得分:0)

据我了解,这种关系通常不归于它所连接的元素。拥有的是关联(关系)结束和相应的属性/属性。第6.4.2节。 UML规范2.4.1明确说明了这一点比你的链接2.5 beta更好。我建议您使用当前正式版本的规格,而不是测试版。我发现2.5有点难以理解,目录看起来很混乱。

关系本身独立存在,没有所有者。除非通过具体的关系类型另有说明(如概括)。

这让我想到了我的答案的主要观点。你为什么需要知道?

我多年来一直在阅读和解释规范,但从未遇到过这样一个具体的问题,而且在规范中相对清楚地说明了这一点。

我建议查看具体的关系并搜索(Ctrl + F)“拥有”(一个协会在2.4.1中从第40页开始详细介绍了这个主题的一页文字)。

答案 2 :(得分:0)

我自己一直想弄清楚什么可以拥有一个关联实例。我正在使用2.4.1。在我看来,这是一个(另一个)标准实际上无法使用的情况。

我没有看过关系的所有专业。我看过协会。它从Element继承所有者。该财产被称为派生联盟。我无法找到子集所有者的协会(或其任何前身)的任何属性。在这种情况下,我不知道协会如何真正拥有一个所有者。

我认为一个包拥有一个关联似乎是合理的。

我正在使用一个UML工具,它肯定会为关联初始化所有者的值。我以编程方式解释在该工具中创建的模型,并将其用作我正在处理的其他建模工具的输入。第一个工具的制造者显然不得不对事物进行补充/猜测,现在我必须决定他们所做的事情是否真的是理性的,如果我想同意他们的结论(这恰好允许分类器拥有协会,我认为是奇怪的)或做其他事情。谢谢OMG。 GRRRR。

我想知道规范的旧版本是否更清晰?