# UML的分类

先简单看一下UML图的分类。

# 结构型的图(Structure Diagram)

是一种偏静态类型的图

# 类图(Class Diagram)

用方框来表示类,用一些线来表示他们之间的关系。

# 对象图(Object Diagram)

对象是类的实例化,方便表示对象之间的关系。

# 构件图(Component Diagram)

构件图又叫组件图,主要描述一个系统的组成与关系。通常在服务器开发时使用。

# 部署图(Deployment Diagram)

部署图是用来描述系统如何部署、本系统与其他系统是怎样的一种关系。通常在服务器开发时使用。

# 包图(Package Diagram)

当类图很多的时候,可以将类放入包中,简化图。

# 行为型的图(Behavior Diagram)

是一种偏动态类型的图

# 活动图(Activity Diagram)

用圆边框表示一个“活动”,用箭头表示活动的先后顺序,类似于流程图。

# 状态机图(State Machine Diagram)

状态机图又叫做转态图,主要用于描述复杂的对象或者模块,内部不同状态的转化过程。

# 顺序图(Sequence Diagram)

可以描述系统的执行过程,常常用来表示系统中类、方法的调用过程。

# 通信图(Communication Diagram)

通信图是顺序图的另外一种画法。

# 用例图(Use Case Diagram)

用例图表达的是什么角色通过软件系统能做什么事情,通常用于软件开发的需求分析阶段。

# 时序图(Timing Diagram)

时序图又叫时间图,表示某东西的状态随时间变化而变化的图,用时间线的方式表示事务状态变化。

# UML类图之间的关系

类与类、接口之间的关系有六种。

# 泛化

泛化关系实际上就是继承关系,表示一般与特殊的关系,他指定子类如何特化父类的所有特征和行为。

  • 表示方法:带三角箭头的实线,箭头指向父类

  • 代码:extends

Classname+ field: type+ method(type): typeSubClassname+ field: type+ method(type): type
Extends
Extends

# 接口与实现

是一种类与接口的关系,表示类时接口所有特征和行为的实现。

  • 表示方法:带三角箭头的虚线,箭头指向接口。

  • 代码表现:implements

«interface»
Name
«interface»...
Classname+ field: type+ method(type): type

# 依赖(Dependency)

是一种使用关系,即一个类的实现需要另一个类的协助。但是需要的需要的那个类只是已局部变量存在,这就叫做依赖

  • 表示方式:带普通箭头的虚线,指向被被依赖者。

StringStringTools+ subString(param:String)
Use
Use

# 关联(Association)

是一种拥有关系,它使一个类知道另一个类的属性和方法。有单向关联和双向关联。关联其实也需要另一个类去协助,主要区别就是需要的那个类是以成员变量的形式存在。

  • 代码体现:成员变量

  • 表示方式:单向关联用带普通箭头的实线,指向被拥有者;双向关联用实现表示。

CouseStudent

# 聚合(Aggregation)

关联又可细化成聚合和组合。

是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

  • 带空心菱形的实线,菱形指向整体

CarTyre

# 组合(Composition)

是整体与部分的关系,但部分不能离开整体而单独存在。

  • 表示方式:带实心菱形的实线,菱形指向整体。

PersonHead

# 访问权限符号表示

Mark Express
+ public
# protected
- private
~ friendly

# 常用的关键字

关键字 Express
static 下划线
abstract 斜体
: 成员类型或方法返回值
= 默认值

# 以动物关系示例

Animal+ drink(water:Water)Water
Use
Use
Bird+ wing: WingMammal
Extends
Extends
Extends
Extends
Wingchicken+ method(type): type
Extends
Extends
RoastChiken
Extends
Extends
Wolf
Extends
Extends
sheep
Extends
Extends
Wolves

<<Interface>>
Price


+ price(): int

<<Interface>>...