零、什么是序列图
序列图(Sequence Diagram),也称为顺序图或时序图,是一种UML交互图,用于描述系统中对象之间的动态协作和消息传递的时间顺序。时序图通过展示对象间发送消息的时间顺序,帮助开发者理解和设计系统的行为和结构。序列图的主要特点包括:
- 二维图:时序图是一个二维图,横轴表示对象,纵轴表示时间。每个对象都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。
- 消息传递:时序图通过描述对象之间发送消息的时间顺序来显示多个对象之间的动态协作。消息在各对象之间横向传递,依照时间顺序纵向排列。
- 强调时间顺序:时序图强调的是对象之间交互的时间顺序,可以直观地描述并发过程。
一、序列图的组成部分
1.1. 角色
角色通常指外部与系统交互的实体,可以是人或其他系统。
1.2. 对象
对象是系统内部的实体,通常是指类的实例。在序列图中,对象通过一个矩形框表示,对象的命名方式为对象名:类名,也可以只显示对象名如对象名:,还可以只显示类名如:类名。
1.3. 生命线
生命线是从对象框向下延伸的虚线,表示对象在时间线上的存在。生命线上的不同点表示不同的时间点。
1.4. 激活
激活通常在生命线上显示为一个较窄的矩形。它表示对象在一段时间内是活跃的,即正在响应或执行某个操作。
1.5. 消息
消息是对象之间交互的基本单位,表示为带箭头的线。箭头指向接收消息的对象。消息可以是同步,异步,或返回消息。
1.5.1. 同步消息
对象在发送同步消息时,必须等接收消息的对象放弃或完成相应的操作之后才可以继续自己的活动。
1.5.2. 异步消息
异步消息表示发送消息的对象仅仅将消息发送出去之后便继续执行后续的操作,而不需等待接收者放弃或完成某些操作。
1.5.3. 返回消息
返回消息表示一个对象收到消息后执行了相应的操作,并将结果返回给发送消息的对象。它表示消息的接收者已经完成了相应的操作,并将结果返回给消息的发送者。
1.6. 自关联消息
自关联消息是指对象在序列图中发送消息给自己的情况。这种消息表示对象内部的自身行为或交互。比如需要执行自身的某个操作。自关联消息在序列图中有助于清晰地描述对象的内部行为和自身交互的过程。
1.7. 组合片段
组合片段用于表示在序列图中的控制结构,如条件、循环、并发等。它通常用一个带有操作符的框表示。框内包含了根据条件或循环的不同情况的交互序列。
1.7.1. 抉择(Alt)
在一组行为中根据特定的条件选择某个片段执行,类似于if-else语句逻辑。
1.7.2. 选项(Opt)
表示一个可选的片段,它可能发生也可能不发生。
1.7.3. 循环(Loop)
表示需要重复执行一定次数的片段,可以制定重复的条件。
1.7.4. 并行(Par)
表示某些片段可以同时进行。
1.7.5. 引用(Ref)
某部分交互被定义在另一个图中。可将一个规模较大的图划分为若干个规模较小的图,方便图的管理和复用。
1.7.6. 中断(Break)
如果执行此片段,则放弃后续的其余部分。 可以使用临界来指示发生中断的条件。
1.7.7. 强顺序(Strict)
两个或更多操作数片段。这些片段必须按给定顺序发生。
1.7.8. 弱顺序(Seq)
包括一组顺序,其所有消息必须在下部分开始之前被处理,和强顺序区别的是,弱顺序对同一部分内不共享一条生命线的消息不强加任何顺序。
1.7.9. 临界区(Critical Region)
临界区(Critical Region)或者叫关键(Critical),用在 Par 或 Seq 片段中。指示此片段中的消息不得与其他消息交错,表示受保护的处理区域,区域中的处理不可以和其他并行区域中的处理交错执行。
1.7.10. 考虑(Consider)
考虑片段用于描述可能发生的情况,但不一定会发生。这类片段帮助开发者探索各种可能性,并评估它们对系统行为的影响。
1.7.11. 忽略(Ignore)
忽略片段用于标记那些在当前描述中不重要或不相关的消息序列。这些消息虽然可能在运行时发生,但对当前的用例描述没有显著意义。
1.7.12. 断言(Assert)
用于指定唯一有效的序列。断言片段通常用在考虑或忽略片段中,以确保只有特定的序列是有效的。这对于验证系统行为是否符合预期非常重要。
1.7.13. 否定(Neg)
用于表示在特定条件下不得发生的序列。否定片段通常通常用在考虑或忽略片段中,用来明确指出某些行为是不允许的,这有助于防止错误的操作和确保系统的稳定性。