UML——序列图案例总结
序列图的主要目的:展示对象间交互的顺序。详细介绍可以参考上一篇文章,序列图是一个二维图。纵向是时间轴,时间沿着竖线向下延伸,横向轴代表了在协作中各个独立对象的类元角色,也称作生命线,当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
举例:
1、生命线
生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。
2、同步消息
发送人在它继续之前,将等待同步消息响应。
3、异步消息
在发送方继续之前,无需等待响应的消息。
4、注释
5、约束
约束的符号很简单,中括号包括约束内容:[Boolean Test]
6、组合片段
组合片段用来解决交互执行的条件及方式,它允许在序列图中直接表示逻辑组件,用于通过制定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
<1>抉择(Alt)
抉择用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if...else...。
抉择在任何场合下只发生一个序列。可以在每个片段中设置一个临界来指示该片段可以运行的条件。else的临界指示其他任何临界都不为true时应运行的片段。如果所有的临界都为false并且没有else,则不执行任何片段。
<2>选项(Opt)
包含一个可能发生或不能发生的序列
<3>循环(Loop)
片段重复一定次数。可以在临界中指示片段重复的条件。
<4>并行(Par)
一个生命线中持续操作的部分
下面还有几种常见的组合片段:
1、Opt(选项)
包含一个可能发生或可能不发生的序列。可以在临界中指定序列发生的条件。相对于OR
2、Alt(抉择)
包含一个列表,这些片段中包含备选信息序列。在任何场合下只能发生一个序列。可以在每个片段中设置一个临界来指示该运行的条件。else的临界指示其他任何临界都不为True时运行的片段。如果所有的临界都为False并且没有else,则不执行任何片段。相当于swith...if..
3、Loop(循环)
片段重复一定次数。可以在临界中指示片段重复的条件。
loop组合片段具有”Min“和”Max“属性,它们指示片段可以重复的最小和最大次数。默认值是无限制。相当于freach....for
4、Break(中断)
如果执行片段,则放弃序列的其余部分。可以使用临界来指示发生中断的条件。
5、Par(并行)
并行处理。片段中的事件可以交错。
6、Critical(关键)
用在par或Seq片段中。指示此片段中的消息不得与其他消息交错。
7、Seq(弱顺序)
有两个或更多操作数片段。涉及同一生命线的消息必须以片段的顺序发生。如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错。
8、Strict(强顺序)
有两个或更多操作数片段。这些片段必须按给定顺序发生。
解释序列的片段
默认情况下,序列图表明可能发生的一系列消息。在运行的系统中,可能会出现您未选择显示在关系图上的其他消息。
需要考虑更改此释义
1、consider(考虑)
指定此片段描述的消息列表。其他消息可发生在运行的系统中,但对此描述来说意义不大。
可在”Message“属性中键入该列表
2、Ignore(忽略)
此片段描述的消息列表。这些消息可发生在运行的系统中,但对此描述来说意义不大。在”Message“属性中键入该列表。
3、Assert(断言)
操作数片段指定唯一有效的序列。通常在consider或Ignore片段中。
4、Neg(否定)
在此片段中显示的顺序不得发生。通常在Consider或Ignore片段中。
源码下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义