在ECore实体之间创建引用时,可以将引用标记为“包含”。 有人可以用简单的话来解释一下普通参考和遏制之间的区别吗?到目前为止,我发现的定义和解释对我来说并不起作用。
答案 0 :(得分:43)
参考:引用是一个简单的“A knows B”关系。单独的引用不会相互影响。 A可以知道B和B可以知道C.因此,如果你有A,你可以通过B转到C.如果删除引用,A,B和C仍然存在,他们就不再相互了解了
遏制:遏制是“A有B”种关系。通常用于列表,例如“A有多个B”。然后,ECore / EMF可以对此类集合执行原子命令,例如将所有对象从一个包含移动到另一个包含。它还可以强制执行约束,例如最小数量的包含对象或最大数量的包含对象,或确保包含的对象不包含在任何其他包含中。
示例:强>
假设您有一个名为ShoppingCart
的对象,其中包含名为Customer
的引用和名为OrderedProducts
的包含。 OrderedProducts
引用了Product
。
这个型号告诉你什么?
答案 1 :(得分:5)
参考:可以像UML中的关联
遏制:是来自UML的组合关系
这也可以在EMF图中看到,如果将containment
设置为true,则该行将具有填充的一侧,显示包含/组合。这就是我所观察到的。