首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

UML标记中的 会合(Aggregation) & 合成(Composition)的区别是

2014-01-01 
UML标记中的 聚合(Aggregation) & 合成(Composition)的区别是 ?UML标记中的 聚合(Aggregation) & 合成(Com

UML标记中的 聚合(Aggregation) & 合成(Composition)的区别是 ?
UML标记中的 聚合(Aggregation) & 合成(Composition)的区别是 ?


看了一篇文章写得是:

1、合成关系是关联关系的一种,是比聚合关系还要强的关系。
2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期

感觉好晦涩,求大侠通俗的解释一下。
[解决办法]
聚合Aggregation可以理解为has-a关系,没有整体的话局部可以存在。
组合Composition可以理解为contains-a关系,部分不可以脱离整体存在。

例子:company和employee之前的关系是聚合关系,因为脱离了company,employee可以单独存在
company和department之间是组合关系
[解决办法]
类与类之间的四种关系
1.依赖 类A在类B中作为一个成员函数的参数或者是返回值 A的析构不在B中
2.关联 类A在类B中作为一个成员变量 析构不在B中
3.聚合 类A作为类B中的一个成员变量 析构在B中 可以在B中的任何周期被析构 就像你的头发 你挂了 头发也就不存在了 但是你活着的时候 头发没了 对你没啥影响
4.组合 类A作为类B中的一个成员变量 只有在B析构的时候才会析构A 就像你的大脑 大脑挂了 你也就挂了 你挂了大脑也挂了
耦合度依次增加
[解决办法]

引用:
关于下面的 能举一个例子不 ?
2.关联 类A在类B中作为一个成员变量 析构不在B中

2.关联 类A在类B中作为一个成员变量 析构不在B中
上面解释的很好,收藏。

我理解的关联 是这样的,未知的否?
class B;
calss A{
B* m_pb;
pbulic:
A(const B *pb):m_pb(pb){}; 
};

class B{
....
};

int main()
{
  B b;
  A a(&b);
  return 0;
}

热点排行