What

类图(Class digram)是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。本质上,类图是现实世界问题领域的抽象对象的结构化、概念化、逻辑化描述。类图建模依次是 概念层、说明层、实现层,这是一个随着抽象层次的逐步降低而逐步细化的过程。

How

概念层类图

说明层类图

实现层类图

实现层的类图是用得最普遍的。实现层观点认为,类是实现代码的描述,类图中的类直接映射到可执行代码。在这个层次上,类必须明确采用哪种实现语言、什么设计模式、什么通信标准、遵循什么规范等。

类(Class)由上到下一般包含3个组成部分:类名属性方法。类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分。类名部分是不能省略的,其他组成部分可以省略。
书写规范如下

  • 类名:正体字说明类是可被实例化的,斜体字说明类为抽象类;
  • 属性:修饰符 <<描述信息>> 属性名:类型;
  • 方法:修饰符 方法名称 (行参列表) :返回类型
    • 行参列表通过 属性名:类型, 属性名:类型 的形式

属性和方法之前可附加的可见性修饰符:
加号(+)表示public;减号(-)表示private;井号(#)表示protected;省略这些修饰符表示具有package(包)级别的可见性。
如果属性或方法具有下划线,则说明它是静态的。描述信息使用 <<…>>。类的性质是由一个属性、一个赋值方法和一个取值方法组成。书写方式和方法类似。

包(Package)是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,通常使用逻辑性的包,用于对模型进行组织;使用物理性的包,用于转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。

  • 接口

接口(Interface)是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口的表示有大概两种方式:

  • 方式一:在类名上添加接口标识 <>
  • 方式二:棒棒糖表示法 o-


  • 关系

一般关系表现为继承或实现关系(is a),关联关系表现为变量(has a ),依赖关系表现为函数中的参数(use a)。

关系 描述 UML表示
泛化 类与类,接口与接口的继承关系 image.png父类
实现 接口与类的关系 image.png接口
关联 通过成员变量耦合 image.png被使用的类
聚合 关联关系的一种,弱关联 局部image.png整体
组合 关联关系的一种,强关联 局部image.png整体
依赖 通过局部变量耦合 image.png被依赖的一方(即 局部变量)
  • 示例

image.png