当前位置: 首页 > news >正文

UML作业第六次:分析系统,绘制顺序图

一、学习小结

1.示例:用->来绘制参与者之间传递的消息, 而不必显式地声明参与者。可以使用 --> 绘制一个虚线箭头。还能用 <- 和 <--,这不影响绘图,但可以提高可读性。 注意:仅适用于时序图,对于其它示意图,规则是不同的。

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

 

2.声明参与者:关键字 participant 用于改变参与者的先后顺序,也可以使用其它关键字来声明参与者:

  • actor
  • boundary
  • control
  • entity
  • database
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections

@enduml

 

关键字 as 用于重命名参与者,使用RGB值或者颜色名修改 actor 或参与者的背景颜色。

@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
   participant L as "I have a really\nlong name"  #99FF99
  '/

Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
可以使用关键字  order自定义顺序来打印参与者。
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
3.在参与者中使用非字母符号:可以使用引号定义参与者,还可以用关键字  as 给参与者定义别名。
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml

 

4.给自己发消息:参与者可以给自己发信息,消息文字可以用\n来换行。

@startuml
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

5.修改箭头的样式:

修改箭头样式的方式有以下几种:

  • 表示一条丢失的消息:末尾加 x
  • 让箭头只有上半部分或者下半部分:将<>替换成\或者 /
  • 细箭头:将箭头标记写两次 (如 >> 或 //)
  • 虚线箭头:用 -- 替代 -
  • 箭头末尾加圈:->o
  • 双向箭头:<->
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice

Bob ->o Alice
Bob o\\-- Alice

Bob <-> Alice
Bob <->o Alice
@enduml

箭头的颜色:

@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml
6.对消息序列编号:关键字 autonumber 用于自动对消息编号。

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml

语句 autonumber start 用于指定编号的初始值,而 autonumber startincrement 可以同时指定编号的初始值和每次增加的值,

可以在双引号内指定编号的格式,格式是由 Java 的DecimalFormat类实现的: (0 表示数字;# 也表示数字,但默认为0)。可以用 HTML 标签来制定格式。还可以用语句 autonumber stop 和 autonumber resume incrementformat 来表示暂停或继续使用自动编号。

7.分割示意图:关键字 newpage 用于把一张图分割成多张,在 newpage 之后添加文字,作为新的示意图的标题。

这样就能很方便地在 Word 中将长图分几页打印。

@startuml

Alice -> Bob : message 1
Alice -> Bob : message 2

newpage

Alice -> Bob : message 3
Alice -> Bob : message 4

newpage A title for the\nlast page

Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml

8.组合消息:可以通过以下关键词将组合消息:

  • alt/else
  • opt
  • loop
  • par
  • break
  • critical
  • group, 后面紧跟着消息内容

 可以在标头(header)添加需要显示的文字(group除外),关键词 end 用来结束分组,注意,分组可以嵌套使用。

 

@startuml
Alice -> Bob: Authentication Request

alt successful case

	Bob -> Alice: Authentication Accepted
	
else some kind of failure

	Bob -> Alice: Authentication Failure
	group My own label
		Alice -> Log : Log attack start
	    loop 1000 times
	        Alice -> Bob: DNS Attack
	    end
		Alice -> Log : Log attack end
	end
	
else Another type of failure

   Bob -> Alice: Please repeat
   
end
@enduml

 

9.分隔符:可以通过使用 == 关键词来将你的图表分割多个步骤,

引用:可以在图中通过使用ref over关键词来实现引用,

延迟:使用...来表示延迟,并且还可以给延迟添加注释,

空间:可以使用|||来增加空间,还可以使用数字指定增加的像素的数量。

10.生命线的激活与撤销:关键字activatedeactivate用来表示参与者的生命活动。

一旦参与者被激活,它的生命线就会显示出来。

activatedeactivate适用于以上情形。

destroy表示一个参与者的生命线的终结。

@startuml
participant User

User -> A: DoWork
activate A

A -> B: << createRequest >>
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: RequestCreated
deactivate B

A -> User: Done
deactivate A

@enduml

还可以使用嵌套的生命线,并且运行给生命线添加颜色。

 

@startuml
participant User

User -> A: DoWork
activate A #FFBBBB

A -> A: Internal call
activate A #DarkSalmon

A -> B: << createRequest >>
activate B

B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A

@enduml

 

11.创建参与者:可以把关键字create放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。

@startuml
Bob -> Alice : hello

create Other
Alice -> Other : new

create control String
Alice -> String
note right : You can also put notes!

Alice --> Bob : ok

@enduml

12.外观参数:

skinparam改变字体和颜色。

可以在如下场景中使用:

  • 在图示的定义中,
  • 在引入的文件中,
  • 在命令行或者ANT任务提供的配置文件中。

你也可以修改其他渲染元素,如以下示例:

@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline

actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C

User -> A: DoWork
activate A

A -> B: Create Request
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: Request Created
deactivate B

A --> User: Done
deactivate A

@enduml

二、例题巩固

1.以《工厂采购》系统为例,分析系统中的对象、消息及对象的交互。

对象:采购员、订货界面、订货管理器、客户、货品、订单

消息:指是实体间的连线。

对象的交互:采购员选择所需采购货品;到达订货界面,接收客户信息,接收货品信息,显示货品信息;到达订货管理器,建客户取货品信息,创建订单;创建客户到达客户区,客户取货品信息到达货品区;创建订单到订单区。

2.脚本和顺序图:

@startuml
skinparam sequenceArrowThickness 2

skinparam roundcorner 20

skinparam maxmessagesize 60

actor 采购员
participant "订货界面" as A

participant "订货管理器" as B

participant "客户" as C

participant "货品" as D

participant "订单" as E

采购员 --> A: 客户信息()

activate A #FFBBBB

采购员 --> A: 选择订货货品()

activate A

A -> B:接收客户信息()

activate B #FFBBBB

A -> B:接收货品信息()

activate B

B --> A: 显示货品信息()

deactivate B

B -> C: 创建客户()<<create>>

activate C #FFBBBB

B -> D: 取货品信息()

activate D 
D --> B: 货品信息()

deactivate B

B -> E: 创建订单()<<create>>

activate E
@enduml

转载于:https://www.cnblogs.com/jhy1205/p/10822310.html

相关文章:

  • IDEA maven 关于ojdbc14,10.2.0.4.0 报错
  • MFC入门
  • Variance Reduction Methods: a Quick Introduction to Quasi Monte Carlo——完结
  • 安装关系型数据库MySQL 安装大数据处理框架Hadoop
  • make: *** 没有指明目标并且找不到 makefile。 停止。
  • 第一篇 变量及数据类型
  • SpringBoot2+Druid+JdbcTemplate+MySql实现增删改查
  • Luogu5363 SDOI2019移动金币(博弈+动态规划)
  • P1099 树网的核
  • Spectral analysis——光谱分析
  • iptables
  • 视觉暂留:视觉暂留
  • qt环境配置
  • 提升Scrapy框架爬取数据效率的五种方式
  • 详解Linux运维工程师必备技能
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 2017-08-04 前端日报
  • Android框架之Volley
  • Angular 响应式表单 基础例子
  • Centos6.8 使用rpm安装mysql5.7
  • es6(二):字符串的扩展
  • git 常用命令
  • HashMap ConcurrentHashMap
  • java中的hashCode
  • linux学习笔记
  • PAT A1092
  • rc-form之最单纯情况
  • React-flux杂记
  • Spring-boot 启动时碰到的错误
  • Wamp集成环境 添加PHP的新版本
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 简单数学运算程序(不定期更新)
  • 数组的操作
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我是如何设计 Upload 上传组件的
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 正则学习笔记
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $.each()与$(selector).each()
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (pojstep1.3.1)1017(构造法模拟)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (二)linux使用docker容器运行mysql
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET MVC第三章、三种传值方式
  • .NET 中 GetProcess 相关方法的性能
  • .NET的数据绑定
  • .NET和.COM和.CN域名区别
  • .NET精简框架的“无法找到资源程序集”异常释疑