当生态实体之间创建参考时,有可能将引用标记为“遏制”。有人可以用简单的言语解释我,直接参考和遏制有什么区别?到目前为止,我发现的定义和解释对我来说并没有解决问题。

有帮助吗?

解决方案

参考: 参考是一个普通的 “知道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 真实,该线将有一个填充的一侧,显示遏制/组成。这就是我观察到的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top