UML图表示常见的类之间的关系
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的关系,这种关系比聚合强;这个时候整体和部分是不可分离的,整体的声明周期与部分的声明周期相同,当整体的周期结束时,部分的周期也随之结束。如人和大脑的关系
图形表示:
依赖性强弱:
组合>聚合>关联>依赖