UML复习笔记

因为经常忘记Uml关系的图示,所以现在在这里整理一下,以防以后又忘了。

UML关系共有6种:继承(泛华),实现,依赖,关联,聚合,组合。

继承的概念比较清晰,不用说了,看下图示:

实现就是一个类实现一个接口,这个概念也清晰:

接下来就是依赖关系。依赖是种很弱的关系,一般类A如果包含类B作为局部变量,或者用了类B的静态函数,又或者是类B成员函数的参数,则两者关系为依赖关系。虽然这种关系很弱,但是类B的修改会引起类A的改变,所以两者的关系还是有必要表示出来的。下面是图示:

比依赖关系强一点的关系是关联关系。如果类A中包含类型为B的成员变量,或者用到了类B的全局变量,则两者关系为关联关系。关联关系又分为多种,常见的基数及含义: 
0..1:0 或1 个实例. 
0..*: 对实例的数目没有限制. 
1: 只能有一个实例. 
1..*: 至少有一个实例. 

容易与关联关系混淆的就是聚合关系。这两者无法通过代码层面来区分,只能通过具体的语义来区分。聚合关系是‘has-a’关系。区分两者要注意一点:关联关系两个对象是对等的,而在聚合关系中两个对象是不平等的,一个表示整体,一个表示部分(就比如公司与员工,学校与学生的关系)。在聚合关系中,部分与整体是可分离的,有各自的生命周期(可以这样想:没有了公司,员工还是可以活的好好的~),而且一个部分可以属于多个整体对象。下图为聚合:

最后一种关系是组合关系,这种关系是‘contains a’的关系,注意与聚合区别。虽然也是整体与部分关系,但组合关系比聚合关系更强。部分离开整体无法存活,整体生命周期结束意味着部分生命周期的结束,且部分无法被其他整体共享。(如人与心脏的关系)

总结下各个关系间的强弱关系:组合>聚合>关联>依赖

posted @ 2013-12-19 20:46  young kind  阅读(367)  评论(0)    收藏  举报