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

时间:2021-09-13 03:27:00

                         顺序图

一、概览

1.PlantUML顺序图语法学习小结,图例及用法

2.《工厂采购》系统对象交互顺序

3.绘制《工厂采购》系统的对象交互的脚本程序

4.绘制的顺序图

二、语法学习小结

1.简单顺序图的绘制

     我们可以用->来绘制参与者之间传递的消息, 而不必显式地声明参与者,也可以使用 --> 绘制一个虚线箭头。

示例:

 

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

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

 

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

2.声名参与者

      使用关键字 participant 用于改变参与者的先后顺序

示例:

@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

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

3.重命名参与者

     使用as关键字对参与者进行重命名

示例:

 

@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

 

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

4.参与者中使用非字母符号

     可以使用引号定义参与者,还可以用关键字 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

 

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

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

[foo] 

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

6.消息序列编号

      使用关键字 autonumber 用于自动对消息编号

示例:

 

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

 

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

7.分割示意图

      使用关键字 newpage 用于把一张图分割成多张

示例:

 

@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

 

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

8.添加注释

      可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释,也可以通过使用 end note 来添加多行注释

示例:

 

@startuml
Alice->Bob : hello
note left: this is a first note

Bob->Alice : ok
note right: this is another note

Bob->Bob : I am thinking
note left
    a note
    can also be defined
    on several lines
end note
@enduml

 

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

9.改变备注框形状

     使用 hnoternote 这两个关键字来修改备注框的形状

示例:

 

@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
@enduml

 

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

10.分隔符

     可以通过使用 == 关键词来将你的图表分割多个步骤

示例:

 

@startuml

== Initialization ==

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

== Repetition ==

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

@enduml

 

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

11.引用

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

示例:

 

@startuml
participant Alice
actor Bob

ref over Alice, Bob : init

Alice -> Bob : hello

ref over Bob
  This can be on
  several lines
end ref
@enduml

 

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

12.延迟的表示

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

示例:

 

@startuml

Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !

@enduml

 

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

13.增加空间

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

示例:

 

@startuml

Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok

@enduml

 

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

14.如何创建参与者

     把关键字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

 

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

15.构造类型和圈点

     可以使用<<>>给参与者添加构造类型,构造类型中,你可以使用(X,color)格式的语法添加一个圆圈圈起来的字符

示例:

 

@startuml

participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>

Bob->Alice: First message

@enduml

 

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

16.包裹参与者

     可以使用boxend box画一个盒子将参与者包裹起来,还可以在box关键字之后添加标题或者背景颜色

 

 

 

示例:

 

@startuml

box "Internal Service" #LightBlue
    participant Bob
    participant Alice
end box
participant Other

Bob -> Alice : hello
Alice -> Other : hello

@enduml

 

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

三、《工厂采购》系统对象交互顺序

1.采购员根据客户信息,选择订货的商品

2.订货界面,接受到客户的信息,接收货物的信息,显示货品信息

3.订货管理器,创建客户到达客户区

4.订货管理器,取货品信息到达货品区

5.订货管理器,创建订单到达订单去

6.结束

四、《工厂采购》系统对象交互脚本程序

 

@startuml
skinparam backgroundColor #33FFCC

  actor 王同乐
  participant "订货界面" as 1
  participant "订货管理器" as 2
  participant "客户" as 3
  participant "货品" as 4
  participant "订单" as 5
 
 王同乐 --> 1: 客户信息()
 activate 1
 王同乐 --> 1: 选择采购货品()
 activate 1
 
 1 --> 2:接收客户信息()
 activate 2
 1 --> 2:接收货品信息()
 activate 2
 2 --> 1: 显示货品信息()
 deactivate 2
 
 2 --> 3: 创建客户()<<create>>
 activate 3
 2 --> 4: 客户取货品信息()
 activate 4
 4 --> 2: 货品信息()
 activate 4
 2 --> 5: 创建订单()<<create>>
 activate 5
@enduml

五、顺序图

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