UML类图常见的几种关系

关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

1. 泛化(Generalization)

    就是通常意义上的继承,是一般和特殊的关系,子类特化了父类的所有特征和行为,体现为成员变量和方法

    使用符号:带空心三角箭头的实线表示,箭头指向父类     

2. 实现(Realization)

    定义和实现定义之间的关系,主要表现为接口和与实现类

    使用符号:带空心三角箭头的虚线表示,箭头指向定义(接口)

3. 依赖(Dependency)

    A的变化会影响到B,可以称为B依赖A,这种关系一般来说是临时,单向的

    例如:人吃饭的时候要用筷子,吃饭依赖筷子,但也是只是在吃饭的时候会依赖

    使用符号:带虚线的箭头,箭头指向被依赖方     --------------->

4. 关联(Association)

    体现的是两个类、或者类与接口之间语义级别的一种强依赖关系;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

    使用符号:带实线的箭头,关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

    eg:

      

 5. 聚合(Aggregation)

    聚合是关联关系的一种特例,体现的是整体和部分,拥有的关系,has-a关系,但是整体和部分是可以分开存在的,他们有各种的生命周期,部分可以属于多个整体对象,一个整体可以拥有多个部分

    使用符号:带空心菱形的实心线,菱形指向整体   

    eg:

      

 6. 组合(Composition)

    组合也是关联关系的一种,体现的是一种包含(contains-a)的关系,这种关系比聚合更强,也称为强聚合,也是整体和部分的关系,但是部分和整体式不可分割的,整体生命周期的结束也意味着部分生命周期的结束

    使用符号:带实心菱形的实心线,菱形指向整体

    eg:

      

   对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;

参考:http://blog.csdn.net/sfdev/article/details/3906243

posted @ 2016-09-29 17:30  hyiam  阅读(298)  评论(0编辑  收藏  举报