一、概念
1. 显示出类、接口以及它们之间的静态结构和关系
2. 用于描述系统的结构化设计
二、元素
1. 具体类
具体类在类图中用矩形框表示,矩形框分为三层:第一层是类名字。第二层是类的成员变量;第三层是类的方法。成员 变量以及方法前的访问修饰符用符号来表示:
“+”表示 public;
“-”表示 private;
“#”表示 protected;
不带符号表示 default。
2. 抽象类
抽象类在UML类图中同样用矩形框表示,抽象类的类名以及抽象方法都用斜体字表示。
3. 接口
接口在类图中也是用矩形框表示,接口在类图中的第一层顶端用构造型 <<interface>>表示,下面是接口的名字,第二层是方法
三、关系
类和类,类和接口,接口和接口之间存在一定关系,UML类图中一般会有连线指明它们之间的关系。关系共有六种类型,分别是实现关系、泛化关系、关联关系、依赖关系、聚合关系、组合关系,如下图所示。
1. 实现关系
实现关系是指接口及其实现类之间的关系。实现关系用空心三角和虚线组成的箭头来表示,从实现类指向接口。在Java代码中,实现关系可以直接翻译为关键字 implements。
2. 泛化关系
是指对象与对象之间的继承关系。如果对象A和对象B之间的“is a”关系成立,那么二者之间就存在继承关系,对象B是父对象,对象A是子对象。例如,女学生“is a”学生,很显然女学生对象和学生对象之间存在继承关系,Student对象是父对象,FemaleStudent对象是子对象。
在UML类图中,泛化关系用空心三角和实线组成的箭头表示,从子类指向父类,在Java代码中,对象之间的泛化关系可以直接翻译为关键字 extends。
3. 关联关系
3.1 一般关联
是指对象和对象之间的连接,它使一个对象知道另一个对象的属性和方法。在Java中,关联关系的代码表现形式为一个对象含有另一个对象的引用。也就是说,如果一个对象的类代码中,包含有另一个对象的引用,那么这两个对象之间就是关联关系。关联关系的一种,是一种强关联关系(has-a)。
在UML图中,双向关联关系用带双箭头的实线或者无箭头的实线双线表示。单向关联用一个带箭头的实线表示,箭头指向被关联的对象。
3.2 依赖
类与类之间 一种 使用 与 被使用 的关系。依赖关系在 Java 中的具体代码表现形式为:
1. B 为 A 的构造器或方法中的局部变量
2. B 为 A方法或构造器的参数
3. B 为 A方法的返回值
4. A 调用 B 的静态方法
简单来说,就是 A 类中, 出现了 B 类,用带箭头的虚线表示,箭头指向被依赖元素
3.3 聚合
聚合关系是 整体和部分之间的关系。且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
用带空心菱形的实线表示,菱形指向整体。
3.4 组合
关联关系的一种,但是这种关系比聚合关系更强 (contains-a)
组合关系不能共享
在组合关系中,如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏;
具体体现:在Java 中,组合关系是通过成员变量来实现的。
用带实心菱形的实线表示,菱形指向整体