1.五分钟读懂UML类图
http://www.cnblogs.com/shindo/p/5579191.html
2.UML类关系(依赖,关联,聚合,组合的区别)
https://www.jianshu.com/p/eefa0b5b4922
2.1 关联
1、关联关系
关联关系又可进一步分为单向关联、双向关联和自关联。
(1)单向关联
我们可以看到,在UML类图中单向关联用一个带箭头的直线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。
(2)双向关联
从上图中我们很容易看出,所谓的双向关联就是双方各自持有对方类型的成员变量。在UML类图中,双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个Product[]数组,表示一个顾客购买了那些产品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客所购买。
(3)自关联
自关联在UML类图中用一个带有箭头且指向自身的直线表示。上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。
2.2依赖--dependency
用带折线的箭头表示
- 依赖其实定义非常模糊,所以使用依赖只应该是在其他关系无法表示的时候:
- 依赖通常体现为调用一个其他所依赖类的方法
- 在代码中往往体现为依赖类作为函数参数或者局部临时变量
举例:人依赖车
2.3聚和--aggregation
UML中聚合关系用带空心菱形和箭头的直线表示。聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在
2.4组合--composition
组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。比如下图:
显然,嘴是头的一部分且不能脱离了头而单独存在。在UML类图中,组合关系用一个带实心菱形和箭头的直线表示。
总结:聚合和组合都属于包含的范畴,现实生活中的关系;比如 汽车包含引擎,头包含嘴;
- 不同的是聚合,两个类/对象(现实中的事物)是彼此可以独立存在的;For Example: 汽车和引擎可以彼此独立存在的因此是聚合关系。
- 组合是c中两个事物不能独立;For Example :头和嘴是彼此不能独立存在的
依赖和关联区别:
- 依赖:代码中通常体现为调用其他类作为参数或者局部变量
- 关联:关联类通常作为一个类的成员变量存在