UML图表示常见的类之间的关系

类之间的关系常见的主要包括以下几种:

  • 继承
  • 实现
  • 依赖
  • 关联
  • 聚合
  • 组合

继承(inheritance)

继承的概念大家都比较熟悉,他主要指的是派生类继承父类或者接口之间的继承,派生类继承了父类中原有的功能,并在此基础上添加了新的功能。例如public继承实质上是一种is-a的关系,(子类is a 基类)

图形表示:

实现(implement)

实现指的是一个类实现一个接口,一个类可以实现一个或者多个接口。实现是类和接口之间常见的一种关系。在java中通常通过implements实现。

图形表示:

依赖

依赖指的是一个类A使用另外一个类B,这种该使用关系是偶然性的,临时的,非常弱的一种关系。但是类B的变化会影响到类A;比如人要使用船过河中,这个时候人和船就是一种依赖关系。具体表现在代码中就是B是类A中的某个方法的参数。

图形表示:

关联

关联是指俩个类之间的或者类和接口之间的一种强依赖关系。而这种强依赖关系不是偶然性的,而是长期的,而且双方的关系是平等的,关联可以是单向的,也可以是双向的。具体表现在代码中是(1):B以类属性的方式出现在类A中(2)A引用类型为B的全局变量

图形表示:

聚合

聚合是关联关系的一种特例,它表现的是一种has-a的关系,即整体与部分的关系,此时整体与部分可以是分离的,他们可以具有各自的声明周期,部分可以属于多个整体对象,也可以被多个整体对象共享;如计算机与CPU的关系聚合中部分和整体都有各自的生命周期,并且互相影响

图形表示:

组合

组合也是关联的一种特例,它体现的是一种contain-a的关系,这种关系比聚合强;这个时候整体和部分是不可分离的,整体的声明周期与部分的声明周期相同,当整体的周期结束时,部分的周期也随之结束。如人和大脑的关系

图形表示:

依赖性强弱:

组合>聚合>关联>依赖