在创建ECore实体之间的引用时,有可能将引用标记为“包含关系”。
有人能以简单易懂的话解释一下普通引用和包含关系之间的区别吗?到目前为止我找到的定义和解释都没能让我理解清楚。
在创建ECore实体之间的引用时,有可能将引用标记为“包含关系”。
有人能以简单易懂的话解释一下普通引用和包含关系之间的区别吗?到目前为止我找到的定义和解释都没能让我理解清楚。
参考:一个参考是一个简单的"A knows B"的关系。独立的参考不会相互影响。A 可以认识 B,B 可以认识 C。因此,如果你有 A,你可以通过 B 找到 C。如果删除了参考关系,A、B 和 C 仍然存在,只是他们不再相互认识。
包含:包含是一种"A has B"的关系。通常用于列表,比如 "A 有多个 B"。ECore/EMF 可以对这些集合执行原子操作,例如将所有对象从一个容器移动到另一个容器。它还可以强制执行约束条件,例如最小数量的包含对象或最大数量的包含对象,或确保包含的对象不包含在任何其他容器中。
示例:
假设你有一个名为 ShoppingCart
的对象,其中有一个名为 Customer
的引用和一个名为 OrderedProducts
的容器。 OrderedProducts
包含对一个名为 Product
的引用。
这个模型告诉你什么?
参考:可以类比 UML 中的关联。
包含:是来自 UML 的组合关系。
在 EMF 图中也可以看到这一点,如果将 containment
设置为 true,那么线条的一侧将被填充,显示包含/组合。这是我观察到的。