UML视频已经看完有一段时间了,机房收费系统的九种图也画完了,视频里也挺详细地介绍了UML中的四大关系,并且在画图中也深深的感受到了这四大关系的重要性,一个不小心就是关系弄错了,一个不小心就是箭头方向错了,所以为了以后少犯错或不犯错,觉得还是应该好好总结它们。
一、关联(Association)
关联关系是一种结构关系,指一种对象和另一种对象有联系,给定关联的两个类,可以从其中的一个类的对象访问到另一个的相关对象。在UML图中关联关系用一条实线表示。
如图:人们到公司应聘,这是多对一的关系,多个人到一个公司应聘。
1、单向和双向关联
关联是一种拥有的关系,它使一个类知道另一个类的属性和方法。如:老师和学生,丈夫和妻子关联可以是双向的,也可以是单向的。双向的关联可以有两种监箭头或者没有箭头,单向的关联有一个箭头。
2、聚合关系(Aggregation)
聚合关系是整体与部分的关系.如车和轮胎是整体和部分的关系.聚合关系是关联关系的一种,是强的关联关系。但是轮胎和车分离后,轮胎还是轮胎。它的箭头及指向是带空心菱形的实心线,菱形指向整体。
3、 组合关系(composition)
组合关系是整体与部分的关系,如没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系。它的箭头及指向是带实心菱形的实线,菱形指向整体。
二、泛化(generalization)
泛化是一种继承关系,子类继承父类,父类具有的功能特征子类都有,并且具有父类没有的功能。如飞机是交通工具的一种。它的箭头及指向是带空心三角的实线,空心三角指向父类。
![](https://img-blog.csdn.net/20141119185350557?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXllODk0ODE3NTcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
三、依赖(Dependency)
依赖是一种使用的关系,所以要尽量不使用双向的互相依赖。如:动物有几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖氧气和水。他们之间是依赖关系。它的箭头及指向是带箭头的虚线,箭头指向被依赖那一方。
![](https://img-blog.csdn.net/20141119185424031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXllODk0ODE3NTcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
四、实现(Realization)
实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。如:遥控器实现了对电视机的控制。它的箭头指向是带三角箭头的虚线,箭头指向接口
五、 总结:
这四种关系的强弱顺序为:泛化= 实现> 组合> 聚合> 关联> 依赖。但是在画用例图的时候因为我的图没有体现扩展(extend)和包含(include)关系被师父批了,开始我以为这两种关系就是依赖的分支,可是后面在网上查的时候,这两种关系并不是属于依赖关系,说扩展和包含是方法,而依赖则是使用,它们三个之间没有关系,那扩展和包含又属于什么关系?