【问题标题】:What is the difference in ECore between containment and reference?ECore 中包含和参考之间有什么区别?
【发布时间】:2011-04-17 03:36:36
【问题描述】:

在 ECore 实体之间创建引用时,可以将引用标记为“包含”。 有人可以用简单的话解释一下普通参考和遏制之间有什么区别吗?到目前为止我发现的定义和解释对我没有用。

【问题讨论】:

    标签: eclipse reference entity-relationship containment eclipse-emf-ecore


    【解决方案1】:

    参考:参考是一个简单的“A 知道 B” 关系。单独的引用不会相互影响。 A 可以知道 B,B 可以知道 C。因此,如果您有 A,则可以通过 B 转到 C。如果删除引用,A、B 和 C 仍然存在,只是它们不再相互认识.

    遏制:遏制是一种“A 有B” 的关系。通常用于列表,例如“A 有多个 B”。然后,ECore/EMF 可以对此类集合执行原子命令,例如将所有对象从一个容器移动到另一个容器。它还可以强制执行约束,例如包含对象的最小数量或包含对象的最大数量,或者确保包含的对象不包含在任何其他容器中。

    示例:

    假设您有一个名为 ShoppingCart 的对象,其引用名为 Customer 和一个名为 OrderedProducts 的容器。 OrderedProducts 引用了 Product

    这个模型告诉你什么?

    • 您可以将客户分配给 ShoppingCart。如果您从 ShoppingCart 中删除 Customer,Customer 对象本身仍将存在(例如在数据库中)
    • OrderedProduct 对象需要 ShoppingCart 才能存在。如果您从购物车中删除一个,它将不复存在。
    • 每个 OrderedProduct 都有对数据库中现有产品的引用。如果您从 ShoppingCart 中删除 OrderedProducts 之一,数据库中的 Product 仍将存在 - 只是该特定客户的该产品订单消失了

    【讨论】:

    • 非常感谢。我认为像您的 ShoppingCart 这样的真实示例就足以触发我大脑中的开关。
    • 类似于 UML 类图中的“关联”和“组合”。
    【解决方案2】:

    参考:可以像 UML 中的关联

    Containment:是UML的组合关系

    这也可以在 EMF 图中看到,如果您将 containment 设置为 true,则该线将有一个填充侧,显示包含/组成。这是我观察到的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2010-09-23
      相关资源
      最近更新 更多