5分钟了解UML图
主要是:继承、依赖、聚合、组合。
## 继承
A(子类)继承B(父类)的功能,并可以增加A的新功能的能力。
继承是类与类、接口与接口之间最常见的关系,表征符号如下(箭头方向是基于动作指向):
![](http://upload-images.jianshu.io/upload_images/6448661-6db93d069098c225.png?imageMogr2/auto-orient/strip|imageView2/2/w/594/format/webp)
A与B的关系:
![](http://upload-images.jianshu.io/upload_images/6448661-6a639424daed515e.png?imageMogr2/auto-orient/strip|imageView2/2/w/863/format/webp)
## 依赖
类A依赖类B才能实现,类B的变化会影响到类A。
举一个例子:B是算法A的功能集,同一个算法在不同的场景下实现不同的功能,算法对功能的选择要根据适用场景设置,算法A依赖功能B实现,B的变化会影响到A。表征符号如下:
![](http://upload-images.jianshu.io/upload_images/6448661-fffac11777f1f615.png?imageMogr2/auto-orient/strip|imageView2/2/w/872/format/webp)
## 聚合
聚合是关联关系的一种特例,体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等,表征符号如下:
![](http://upload-images.jianshu.io/upload_images/6448661-d4114c1107242d3d.png?imageMogr2/auto-orient/strip|imageView2/2/w/810/format/webp)
## 组合
组合也是关联关系的一种特例,体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,表征符号如下:
![](http://upload-images.jianshu.io/upload_images/6448661-4b54f34b31fcbca1.png?imageMogr2/auto-orient/strip|imageView2/2/w/806/format/webp)
## 总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>依赖