2021-11-19 00:00:52
UML类图:
- 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
- 类之间的关系:
依赖、泛化(继承)、实现、关联、聚合与组合
- 纵向关系:继承(泛化),实现(实现)-------类与类、或者类与接口之间
- 横向/引用关系:组合、聚合、关联、依赖-------类与类、或者类与接口之间
- 从强到弱(这四种关系所表现的强弱):组合>聚合>关联>依赖
类图关系概述:
1、泛化关系
2、实现关系
3、依赖关系
4、关联关系
4.1、一对一的关系
4.2、单向一对多关系
4.3、单向多对一关系
4.4、双向一对多、多对一关系
4.5、单向多对多关系
5、聚合关系
6、组合关系
1、泛化关系(generalization)
- 指的是一个类(称为子类、子接口)继承(extends)另外的一个类(称为父类、父接口)的功能,并可以增加自己额外的一些功能,继承是类与类或者接口与接口之间最常见的关系。
- 在java中此类通过关键字extends明确标识。
- 在UML类图中,继承经常使用 空心三角+实线 表示。
接口之间的泛化关系:
类之间的泛化关系:
2、实现关系(realization)
java中接口(interface)详解_sun_shine56的博客-CSDN博客
- 实现关系:指的是一个class类实现interface接口(可以实现多个接口)的功能;实现是类与接口之间最常见的关系;
- 在java中此关系通过关键字implements明确标识。
- 在UML类图中,实现通常使用 空心三角+虚线 表示。
3、依赖关系(dependent)
- 依赖关系:指的是类与类之间的联接。依赖关系表示:一个类依赖于另一个类的定义。一般而言依赖关系在java语言中体现为成员变量、局域变量、方法的形参、方法返回值,或者对静态方法的调用。
- 表示一个A类依赖于B类的定义,如果A对象离开B对象,A对象就不能正常编译,则A对象依赖于B对象(A类中使用了B对象)。
- 比如:某个人要过河,需要借用一条船,此时人与船之间的关系就是依赖;在代码层面,类B作为参数被类A在某个method方法中使用。
- 在UML类图中,以来通常用虚线表示
图中出现了3种依赖情况:
1:成员变量,这也是关联关系
2:方法参数
3:方法内的局部变量
4、关联关系(association)
- 关联关系:指的是类与类之间的联接,它使一个类知道另一个类的属性和方法(实体变量体现)。A类依赖于B对象,并且把B作为A的一个成员变量,则A和B存在关联关系。
- 关联可以是双向的,也可以是单向的。两个类之前是一个层次的,不存在整体和部分的关系。
- 在UML类图中。关联常用 实线箭头 表示。
按照多重性分类:
一对一:一个A对象属于一个B对象,一个B对象属于一个A对象。
一对多:一个A对象包含很多个B对象。
多对一:多个A对象属于一个B对象,并且多个A对象中的每个A对象只能属于一个B对象。
多对多:一个A对象属于多个B对象,一个B对象属于多个A对象。
按导航性分类:
单向:只能从A通过属性导航到B,B不能导航到A。
双向:A可以通过属性导航到B,B也可以通过属性导航到A。
关联关系的判断方法:
判断都是从对象的实例上面来看的
判断关系必须确定一对属性
判断关系必须确定具体需求
4.1、一对一的关系
单向:java类设计
1 public class QQNumber { 2 private QQZone zone; 3 } 4 5 public class QQZone{ 6 }
双向:java类设计
1 public class QQNumber { 2 private QQZone zone; 3 } 4 5 public class QQZone { 6 private QQNumber number; 7 }
4.2、单向的一对多
4.3、单向多对一
4.4、双向一对多、多对一
4.5、单向多对多
5、聚合关系(aggregtion)
- 聚合关系:关系的一种特例,它体现的是整体与部分,是一种“弱拥有”的关系,即has-a的关系。聚合是整体与部分之间的关系。
- 例如,汽车类与引擎类、轮胎类,以及其他的零件类之间的关系---整体和个体的关系。
- 与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系多涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。
- 聚合关系表示整体和个体的关系,整体和个体可以相互独立存在,一定是有两个模块分别管理整体和个体。
- 在UML类图中,聚合通常使用 空心菱形+实线箭头 表示。
6、组合关系(composition)
- 组合关系:是关联关系的一种特例,它体现的是一种contains-a(包含的关系,这种关系比聚合更强,也称为强融合)。
- 它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活。在一些情况下将负责代表部分的湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责对此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。部分和整体的生命周期一样。
- 整体和个体都不能独立存在,一定是在一个模块中同时管理整体和个体,生命周期必须相同(级联)。
- 在UML类图中,组合通常使用 实线菱形+实线箭头 表示。