在UML中设置关联结束所有权:对于视觉范例(或其他UML工具)中生成的代码,它意味着什么?

时间:2013-09-21 12:35:30

标签: uml visual-paradigm

在生成的代码上将关联结束所有权从“关联”设置为“分类器”有什么影响?

换句话说,

0)我从空图开始

1)我创建了A类和B类

2)我用关联A-B连接A和B

3)A处的关联结束命名为

4)B处的关联结束命名为b

5)a的关联结束所有权设置为B类(默认设置为关联A-B本身)

6)我为这个图生成了Java代码

如果我省略第5步,如何以及为什么(生成的代码)现在应该有什么不同?即如果我使用默认值?

将B的关联结束所有权设置为B类的含义是什么? 它有什么不同?

在视觉范例中,图表的不同之处如下(第二个图表显示了步骤5是否省略):

enter image description here

enter image description here

编辑:

在VP-UML中,两种情况下生成的代码都是相同的:

public class A {

    B b;

}

public class B {

    A a;

}

所以从这个意义上说,所有权并不重要?这有点令人困惑。

3 个答案:

答案 0 :(得分:2)

我可以给你一个关于一般UML 2源代码生成器如何工作的一般方法(UML规范没有指定如何从UML模型生成代码)

从我的观点来看,如果关联结束(属性)属于UML类,那么应该在源代码类中生成一个字段,而如果它属于该关联,则不生成任何字段(允许您建模)类之间的单向或双向关联)。看看我最近的例子 posted

答案 1 :(得分:1)

所有权意味着类或其实例不仅可以到达另一个类的实例,而且还可以将其作为属性(直接引用或只是包含它)。所有权不属于UML的严格特征。

  • 在其他事情之前,您应该了解A到B的关联是什么。
    • 基本上它是A和B之间的实线。它可以表示一个结构,它将A的类/实例与B的类/实例连接起来。结构可以是任何类型,属于任何地方。所有关于该行的信息都描述了这种结构。
    • 如果有两个结构,一个结构连接A的一个实例和B的实例,另一个结构连接B的实例和A的实例,则可以在一个关联中显示它们。然后,关于其B端写入的信息描述第一结构(b-> a),关于另一端的信息描述另一结构。
    • 如果您有多个结构从A到B引导,则必须绘制两个不同的关联。
    • 如果连接结构很复杂,您可以将其表示为关联类。在那里你可以定义更多细节。
    • 连接结构可以连接两个以上的类,然后它将显示为一个大的菱形,并且具有到这些类的实心分支。它还是联想!注意:现有工具非常支持这两个更复杂的关联。您可以轻松地创建一些绝对无意义的东西。他们很难。小心使用。

example Class diagram


在C ++实例中,A可以使B实例不是指针,而是直接。它没有特殊的UML符号,它应该以与普通的指针属性相同的方式显示。

答案 2 :(得分:0)

我认为您正在尝试处理的约定已被弃用。

可导航性符号在过去经常根据 非正式公约,其中不可通行的目的被假定为 归协会所有,但可以通航的目的是 分类器在另一端拥有。现在这个约定 不推荐使用。

来源:www.site.uottawa.ca