代码之家  ›  专栏  ›  技术社区  ›  Kosi2801

包含和引用在ecore中的区别是什么?

  •  21
  • Kosi2801  · 技术社区  · 14 年前

    在Ecore实体之间创建引用时,可以将引用标记为“包含”。 有人能用简单的话来解释我,简单的引用和包含之间有什么区别?到目前为止我发现的定义和解释并没有给我带来什么好处。

    2 回复  |  直到 12 年前
        1
  •  43
  •   mhaller    14 年前

    参考文献: 引用是一个普通的 “A知道B” 关系。单独的引用不会相互影响。A可以知道B,B可以知道C。因此,如果你有A,你可以通过B转到C。如果你去掉引用,A,B和C仍然存在,他们只是不再相互了解了。

    遏制: 遏制是指 “A有B”

    例子:

    假设您有一个名为 ShoppingCart 引用名为 Customer 还有一个容器 OrderedProducts . 这个 有序产品 引用了 Product .

    这个模型告诉你什么?

    • 您可以将客户分配到购物车。如果从ShoppingCart中删除客户,则客户对象本身仍然存在(例如,在数据库中)
    • OrderedProduct对象需要一个ShoppingCart才能存在。如果从购物车中删除一个,它将不再存在。
    • 每个OrderedProduct都有一个对数据库中现有产品的引用。如果从购物车中删除其中一个已订购的产品,数据库中的产品仍将存在-只有该特定客户的产品订单已不存在。
        2
  •  5
  •   Eldar Abusalimov    12 年前

    参考文献 :可以类似于UML中的关联

    遏制 :是来自UML的组合关系

    如果设置了 containment 若为真,则该线将有一个填充边,显示包含/成分。这就是我所观察到的。

    推荐文章