在生成的代码上将关联结束所有权从“关联”设置为“分类器”有什么影响?
换句话说,
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是否省略):
编辑:
在VP-UML中,两种情况下生成的代码都是相同的:
public class A {
B b;
}
public class B {
A a;
}
所以从这个意义上说,所有权并不重要?这有点令人困惑。
答案 0 :(得分:2)
我可以给你一个关于一般UML 2源代码生成器如何工作的一般方法(UML规范没有指定如何从UML模型生成代码)
从我的观点来看,如果关联结束(属性)属于UML类,那么应该在源代码类中生成一个字段,而如果它属于该关联,则不生成任何字段(允许您建模)类之间的单向或双向关联)。看看我最近的例子 posted
答案 1 :(得分:1)
所有权意味着类或其实例不仅可以到达另一个类的实例,而且还可以将其作为属性(直接引用或只是包含它)。所有权不属于UML的严格特征。
在C ++实例中,A可以使B实例不是指针,而是直接。它没有特殊的UML符号,它应该以与普通的指针属性相同的方式显示。
答案 2 :(得分:0)
我认为您正在尝试处理的约定已被弃用。
可导航性符号在过去经常根据 非正式公约,其中不可通行的目的被假定为 归协会所有,但可以通航的目的是 分类器在另一端拥有。现在这个约定 不推荐使用。