什么是UML


UML(Unified Modeling Language) 是让系统可视化、让规格和设计文档化的表现方法。

类图


UML本质是就是画各种类图(Class Diagram)用于表示接口、实例等之间相互的静态关系。

类图中有:

  • attribute:属性
  • operation:操作

展示类的层次关系的类图:

abstract class ParentClass {
	int field1;
	static char field2;
	abstract void methodA();
	double methodB() {
		// ...
	}
}

class ChildClass extends ParentClass {
	void methodA() {
		// ...
	}
	static void methodC() {
		// ...
	}
}

这张图的含义:

  • 类图
    • 类名
    • 字段名
    • 方法名
  • 箭头
    • 继承关系(子类指向父类)

样式关系


类图其实可以通过字体的样式,判断类图的类名、字段名、方法名,是什么修饰的

  • abstract类(抽象类):以斜体方式显示
  • static字段(静态字段):以下划线显示
  • abstract方法(抽象方法):以斜体方式显示
  • static方法(静态方法):以下划线显示

接口与实现


接口首先会在类名部分添加一个标识:<<interface>>

其次,实现关系就不是用普通的实现箭头表示了,而是使用虚线

这张类图的代码如下:

interface Printable {
	abstract void print();
	abstract void newPage();
}

class PrintClass implements Printable {
	void print() {
		// ...
	}
	void newPage() {
		// ...
	}
}

聚合


聚合就是表示类的包含关系,比如:Basket(果篮)中包含了 Fruit(水果),水果又包含了 Color(颜色)

示例代码如下:

class Color {
	// ...
}

class Fruit {
	Color color;
	// ...
}

class Basket {
	Fruit[] fruits;
	// ...
}

那他的类图就是:

可见性(访问控制)


代码:

class Something {
	private int privateField;
	protected int protectedField;
	public int publicField;
	int packageField;
	private void privateMethod() {
	}
	protected void protectedMethod() {
	}
	void packageMethod() {
	}
}

类图:

如上图,该类图表示了方法和字段可可见性。其对应关系如下:

  • +:表示 public
  • -:表示 private
  • #:表示 protect
  • ~:当前包范围

类的关联


可以如下图表示类的关联:

添加了黑三角表示类关联

时序图


时序图(sequence diagram)表示程序在工作时其内部方法的调用顺序,以及事件发生顺序。