UML的依赖,关联,聚合和组合
来源:互联网 发布:知大局精业务 编辑:程序博客网 时间:2024/05/07 13:03
在UML中,类之间的关系可以分为:依赖,关联,聚合和组合四类。这四类关系其实都可以看作是某种意义上的关联,从依赖到组合,它们的关联强度由弱到强。
依赖是类与类之间最弱的关联,现实中的例子是,类A的某个方法的参数中使用了类B,这样就可以说类A依赖类B。而关联比依赖更强,例如类A中有一个属性,或者说一个成员变量是类B,那么就说类A关联类B。(但网上有的帖子把这种情况不看作是关联,在这些帖子中关联和依赖的强度是一样的,后一种情况应该算是聚合或者组合。)
聚合,用空心菱形表示,指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
组合,用实心菱形表示,也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
区别聚合和组合的关键就是整体和部分的生命周期,如果整体和部分是同生共死,一荣俱荣,一损俱损的,那么这就是组合,否则就是聚合。这可以通过下面的代码来对比:
//聚合
class A
{
public:
A(B * pb)
{
m_pb = pb;
}
...
private:
B * m_b;
};
//组合
class A
{
public:
A()
{
}
...
private:
B m_b;
}
对于聚合来说,它不负责组成部分的创建与删除,也就是说A只使用B,但B的生死A不管。而组合就不同了,
A要全权负责B的生老病死。所以组合的强度比聚合要大。聚合关系是“has-a”关系,组合关系是“contains-a”关系;
聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生
存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了
代表部分事物的对象。
转帖自:http://iambbrb.blogspot.com/2009/05/uml.html
- UML的依赖,关联,聚合和组合
- UML依赖与关联,聚合和组合
- UML 依赖 关联 聚合 组合
- UML 依赖 关联 聚合 组合
- UML类关系:依赖,关联,聚合和组合
- UML类关系:依赖,关联,聚合和组合
- UML类关系(依赖,关联,聚合,组合的区别)
- UML类关系:依赖、关联、聚合、组合
- UML------依赖、泛化、实现、聚合、组合、关联
- UML关系(泛化、依赖、关联、聚合、组合)
- 组合 聚合 关联 依赖 继承 UML
- UML图 依赖、关联、聚合、组合
- UML-泛化、关联、聚合、组合、依赖
- 【软考】--UML 依赖 关联 聚合 组合
- UML依赖、泛化、关联、聚合、组合、实现
- UML: 依赖,泛化,关联,聚合,组合,实现
- 依赖,关联,聚合和组合
- UML中的依赖与关联(单向与双向关联,组合和聚合)
- ubuntu下的常用技巧
- 另外两个metasploit的猥琐插件(转载影子大叔)
- Tethering
- 万能打印机使用的一些小技巧
- UltraEdit的文件标签不见了
- UML的依赖,关联,聚合和组合
- 中国剩余算法及欧几里德的扩展
- sql2005 安装性能监视器计数器要求失败
- 逐步设置vim C/C++语法高亮显示和自动缩进
- UML中关联、依赖、聚集等关系的异同
- Behind C++ [2]- Static Variables
- fckeditor简要配置说明
- 自己调试中的经验--日积月累
- Android SDK 1.5中文版 (Application基础—2)