遏制和参考之间的生态区有什么区别?
-
05-10-2019 - |
题
当生态实体之间创建参考时,有可能将引用标记为“遏制”。有人可以用简单的言语解释我,直接参考和遏制有什么区别?到目前为止,我发现的定义和解释对我来说并没有解决问题。
解决方案
参考: 参考是一个普通的 “知道b” 关系。单独的参考不会相互影响。 a可以知道b和b可以知道C.因此,如果您有A,则可以通过B上的C进行C。如果您删除参考文献,A,B和C仍然存在,他们只是不再彼此认识。
遏制: 遏制是 “ A有B” 一种关系。通常用于列表,例如“ A有多个B”。然后,Ecore/EMF可以在此类集合上执行原子命令,例如将所有对象从一个封存移动到另一个对象。它还可以强制执行约束,例如最小包含的对象或最大含量包含的对象,或确保包含的对象不包含在任何其他封存中。
例子:
假设您有一个称为的对象 ShoppingCart
带有称为 Customer
和一个称为的遏制 OrderedProducts
. 。这 OrderedProducts
有参考 Product
.
这个模型告诉您什么?
- 您可以将客户分配给购物车。如果您将客户从购物车中删除,则客户对象本身仍然存在(例如,在数据库中)
- 订购生产对象需要购物车存在。如果您从购物车中删除一个,它将不复存在。
- 每个OrderedProduct都有对数据库中现有产品的引用。如果您从购物车中删除了订购的产品之一,则数据库中的产品仍然存在 - 仅该产品的该特定客户的订单就消失了
其他提示
参考 :可以像UML中的关联
遏制 :来自UML的组成关系
此外,如果您设置了EMF图,则可以看到 containment
真实,该线将有一个填充的一侧,显示遏制/组成。这就是我观察到的。
不隶属于 StackOverflow