电竞比分网-中国电竞赛事及体育赛事平台

分享

UML作業(yè)第六次:分析系統(tǒng),繪制順序圖

 印度阿三17 2019-05-05

?一、學(xué)習(xí)小結(jié)

1.示例:用->來繪制參與者之間傳遞的消息, 而不必顯式地聲明參與者??梢允褂?-->?繪制一個虛線箭頭。還能用?<-?和?<--,這不影響繪圖,但可以提高可讀性。 注意:僅適用于時序圖,對于其它示意圖,規(guī)則是不同的。

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

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

?

2.聲明參與者:關(guān)鍵字?participant?用于改變參與者的先后順序,也可以使用其它關(guān)鍵字來聲明參與者:

  • 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

?

關(guān)鍵字?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
可以使用關(guān)鍵字?order自定義順序來打印參與者。
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
3.在參與者中使用非字母符號:可以使用引號定義參與者,還可以用關(guān)鍵字?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.給自己發(fā)消息:參與者可以給自己發(fā)信息,消息文字可以用\n來換行。

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

5.修改箭頭的樣式:

修改箭頭樣式的方式有以下幾種:

  • 表示一條丟失的消息:末尾加?x
  • 讓箭頭只有上半部分或者下半部分:將<>替換成\或者?/
  • 細(xì)箭頭:將箭頭標(biāo)記寫兩次 (如?>>?或?//)
  • 虛線箭頭:用?--?替代?-
  • 箭頭末尾加圈:->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.對消息序列編號:關(guān)鍵字 autonumber 用于自動對消息編號。

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

語句?autonumber?start?用于指定編號的初始值,而?autonumber?startincrement?可以同時指定編號的初始值和每次增加的值,

可以在雙引號內(nèi)指定編號的格式,格式是由 Java 的DecimalFormat類實現(xiàn)的: (0?表示數(shù)字;#?也表示數(shù)字,但默認(rèn)為0)??梢杂?HTML 標(biāo)簽來制定格式。還可以用語句?autonumber stop?和?autonumber resume?incrementformat?來表示暫?;蚶^續(xù)使用自動編號。

7.分割示意圖:關(guān)鍵字?newpage?用于把一張圖分割成多張,在?newpage?之后添加文字,作為新的示意圖的標(biāo)題。

這樣就能很方便地在?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.組合消息:可以通過以下關(guān)鍵詞將組合消息:

  • alt/else
  • opt
  • loop
  • par
  • break
  • critical
  • group, 后面緊跟著消息內(nèi)容

?可以在標(biāo)頭(header)添加需要顯示的文字(group除外),關(guān)鍵詞?end?用來結(jié)束分組,注意,分組可以嵌套使用。

?

@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.分隔符:可以通過使用?==?關(guān)鍵詞來將你的圖表分割多個步驟,

引用:可以在圖中通過使用ref over關(guān)鍵詞來實現(xiàn)引用,

延遲:使用...來表示延遲,并且還可以給延遲添加注釋,

空間:可以使用|||來增加空間,還可以使用數(shù)字指定增加的像素的數(shù)量。

10.生命線的激活與撤銷:關(guān)鍵字activatedeactivate用來表示參與者的生命活動。

一旦參與者被激活,它的生命線就會顯示出來。

activatedeactivate適用于以上情形。

destroy表示一個參與者的生命線的終結(jié)。

@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

還可以使用嵌套的生命線,并且運(yùn)行給生命線添加顏色。

?

@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.創(chuàng)建參與者:可以把關(guān)鍵字create放在第一次接收到消息之前,以強(qiáng)調(diào)本次消息實際上是在創(chuàng)建新的對象。

@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.外觀參數(shù):

skinparam改變字體和顏色。

可以在如下場景中使用:

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

@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.以《工廠采購》系統(tǒng)為例,分析系統(tǒng)中的對象、消息及對象的交互。

對象:采購員、訂貨界面、訂貨管理器、客戶、貨品、訂單

消息:指是實體間的連線。

對象的交互:采購員選擇所需采購貨品;到達(dá)訂貨界面,接收客戶信息,接收貨品信息,顯示貨品信息;到達(dá)訂貨管理器,建客戶取貨品信息,創(chuàng)建訂單;創(chuàng)建客戶到達(dá)客戶區(qū),客戶取貨品信息到達(dá)貨品區(qū);創(chuàng)建訂單到訂單區(qū)。

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: 創(chuàng)建客戶()<<create>>

activate C #FFBBBB

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

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

deactivate B

B -> E: 創(chuàng)建訂單()<<create>>

activate E
@enduml

?










?



?
來源:http://www./content-4-182051.html
                                    

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多