1

我有点困惑它是哪一个。

您可以说它通过指针“使用”对象 - 因此是关联。但这听起来也像聚合——“有一个”对象,但是当这个对象死亡时,并不意味着被引用的对象死亡。

哪一个在 UML 中最有意义?

4

2 回答 2

1

它可以指示关联、聚合和事件组合。三者之间的区别是语义上的,而不是静态的或特定于实现的。

  1. 如果指向的类与拥有类有生命周期依赖关系(没有它就不能存在的整体的一部分,如哈希图中的条目类),那么它就是一个组合。
  2. 如果指向的类是所属类的一部分(语义关系,即在应用程序中的控制器之间共享的数据库连接),那么它就是一个聚合。
  3. 如果指针类用于另一件事(缓存、某些计算中的中间值等),那么它可能是一个简单的关联。

但是 UML 为不同的解释留下了很大的空间,所以你永远不会在这里得到“正确”的答案。

于 2013-03-08T12:50:32.810 回答
0

首先,“聚合关系”实际上是一种(二进制)关联,其中一端具有“无”以外的聚合类型。那么聚合只是与精细语义的关联。

聚合可以是复合的(全菱形)或共享的(空心菱形)。复合聚合意味着“复合对象对复合对象的存在和存储负责”(然后在删除复合时引用的对象死亡,但在删除复合之前可能会删除一部分)。

另一方面,共享聚合不绑定聚合对象的生命周期(UML 规范说“共享聚合的精确语义因应用程序区域和建模者而异”和“聚合的精确生命周期语义是一个语义变化点”)。它们介于朴素的联想和复合的联想之间。

于 2013-03-08T03:41:34.907 回答