目录
一、引言
UML(Unified Modeling Languge 统一建模语言)是我们在领域建模、工程设计、需求分析、系统架构等场景下经常使用的一种建模手段。UML为我们提供了丰富的图、关系、事物,让我们可以很好的描述各种对象以及对象之间的关系。
本文主要对UML中使用频率较高的类图和时序图进行介绍。
二、类图
1.简介
James Rumbaugh对类的定义是:类是具有相似结构、行为和关系的一组对象的描述符。类是面向对象系统中最重要的构造块。类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类加上他们之间的关系就构成了类图,类图中还可以包含接口、包等元素,也可以包括对象、链等实例。
2.类图关系介绍
a.关联(Association):两个相对独立的对象存在某种关系。常用于描述1对1、1对多、多对多等关系。例如,老师和学生。
用实线大于号表示,大于号的方向为被关联对象
b.依赖(Dependency):一个对象的存在是以另一个对象为先决条件的。例如,汽车和汽油。
用虚线大于号表示,大于号的方向为被依赖对象
c.聚合(Aggregate) :部分和整体的关系。不要求部分和整体的生命周期一致。例如,车和车队
用空心菱形和大于号表示,空心菱形方向表示整体,大于号方向表示部分
d.组合(Combination):部分和整体的关系。要求部分和整体的生命周期一致。例如,CPU和服务器
用实心菱形和大于号表示,实心菱形方向表示整体,大于号方向表示部分
f.泛化(Generalization):表示类与类之间的继承关系。例如,汽车和交通工具
用实线空心三角形表示,三角形的方向为父类方向
g.实现(Realization):表示类与接口的实现关系。例如,鸟和飞翔
用虚线空心三角形表示,三角形的方向为接口方向
3.类图元素表示
类框一般分为三层,由上到下依次为:类名(Name)、属性(Attribute)、操作(Operation)
a.权限表示
+ 表示 public
- 表示 private
# 表示 protected
~ 表示default,可省略
b.常见规则
抽象类和抽象方法用斜体表示
静态类和静态方法加下划线
接口需在类名上方加<<Interface>>
字段和方法返回值的数据类型非必须
4.示例
三、时序图
1.简介
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
2.时序图元素
a.角色(Actor):系统角色,可以是人或者其他系统,子系统。
b.对象(Object):对象代表时序图中的对象在交互中所扮演的角色,位于时序图顶部。
c.生命线(Lifeline):生命线代表时序图中的对象在一段时期内的存在。时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线,对象间 的消息存在于两条虚线间。
d.控制焦点(Activation):控制焦点代表时序图中的对象执行一项操作的时期,在时序图中每条生命线上的窄的矩形代表活动期。它可以被理解成C语言语义中一对花括号“{}”中的内容。
e.消息(Message):消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于在实体间传递信息。允许实体请求其他的服务,类角色通过发送和接受信息进行通信。
tips:
时序图中存在三种消息,同步消息、异步消息以及返回消息
同步消息表示如下:
异步表示表示如下:
返回消息表示如下:
3.组合片段
片段类型 | 名称 | 说明 |
Opt | 选项 |
包含一个可能发生或可能不发生的序列。可以在临界中指定序列发生的条件。
|
Alt | 抉择 |
包含一个片段列表,这些片段包含备选消息序列。在任何场合下只发生一个序列。可以在每个片段中设置一个临界来指示该片段可以运行的条件。 else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 false 并且没有 else ,则不执行任何片段。
|
Loop | 循环 |
片段重复一定次数。可以在临界中指示片段重复的条件。Loop 组合片段具有“Min”和"Max"属性,它们指示片段可以重复的最小和最大次数。默认值是无限制。
|
Break | 中断 |
如果执行此片段,则放弃序列的其余部分。可以使用临界来指示发 生中断的条件。
|
Par | 并行 |
并行处理。片段中的事件可以交错。
|
Critical | 关键 |
用在 Par 或 Seq 片段中。指示此片段中的消息不得与其他消息交错。
|
Seq | 弱顺序 |
有两个或更多操作数片段。涉及同一生命线的消息必须以片段的顺序发生。如果消息涉及的生命线不同 ,来自不同片段的消息可能会并行交错。
|
Strict | 强顺序 |
有两个或更多操作数片段。这些片段必须按给定顺序发生。
|
Consider | 考虑 |
指定此片段描述的消息列表。其他消息可发生在运行的系统中,但对此描述来说意义不大。在"Messages"属性中键入该列表。
|
Ignore | 忽略 |
此片段未描述的消息列表。这些消息可发生在运行的系统中 ,但对此描述来说意义不大。在"Messages"属性中键入该列表。
|
Assert | 断言 |
操作数片段指定唯一有效的序列。 通常用在 Consider 或 Ignore 片段中。
|
Neg | 否定 |
此片段中显示的序列不得发生。通常用在 Consider 或 Ignore 片段中。
|
4.示例
四、参考资料
程杰.大话设计模式.北京:清华大学出版社,2007