指针/引用数据成员是否指示UML中的关联或聚合关系?

时间:2013-03-08 03:04:48

标签: oop uml aggregation

我对它是哪一个感到有点困惑。

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

哪一个在UML中最有意义?

2 个答案:

答案 0 :(得分:1)

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

  1. 如果指向的类与拥有类具有生命周期依赖关系(没有它的整体的一部分,就像hashmap中的条目类那样)那么它就是一个组合。
  2. 如果指向的类是拥有类的部分(语义关系,即应用程序中控制器之间共享的数据库连接),那么它就是聚合。
  3. 如果指针类用于另一件事(缓存,某些计算中的中间值等),那么它可能是一个简单的关联。
  4. 但是UML为不同的解释留下了很多空间,所以你永远不会得到一个“正确”的答案。

答案 1 :(得分:0)

首先,"聚合关系"实际上是一个(二元)关联,其中一端的聚合种类不是" none"。然后,聚合只是与精炼语义的关联。

聚合可以是复合(完整菱形)或共享(空心菱形)。复合聚合意味着"复合对象负责组合对象的存在和存储" (当复制被删除时,引用的对象会死亡,但是一部分可能是删除复合词之前删除。)

另一方面,共享聚合不会束缚聚合对象的生命周期(UML规范说" 共享聚合的精确语义因应用程序区域和建模者而异& #34;和#34; 聚合的精确生命周期语义是一个语义变异点")。它们介于一个朴素的协会和一个复合的协会之间。