UML第五次作業:繪制狀態圖


                           狀態圖

一、概覽

1、PlantUML狀態圖 語法學習小結。圖例及用法

2、語言描述《電梯控制》系統《銀行賬戶》系統狀態轉換

3、繪制《電梯控制》系統《銀行賬戶》系統狀態轉換的腳本程序

4、繪制的狀態圖

二、語法小結

1.開始、結束

    使用([*])開始和結束狀態圖。 使用-->添加箭頭

示例:

 

@startuml

[*] --> State1
State1 --> [*]
State1 : this is a string
State1 : this is another string

State1 -> State2
State2 --> [*]

@enduml

 

2.合成狀態

     一個狀態也可能是合成的,使用關鍵字state和花括號來定義合成狀態。

示例:

@startuml
scale 350 width
[*] --> NotShooting

state NotShooting {
  [*] --> Idle
  Idle --> Configuring : EvConfig
  Configuring --> Idle : EvConfig
}

state Configuring {
  [*] --> NewValueSelection
  NewValueSelection --> NewValuePreview : EvNewValue
  NewValuePreview --> NewValueSelection : EvNewValueRejected
  NewValuePreview --> NewValueSelection : EvNewValueSaved
  
  state NewValuePreview {
     State1 -> State2
  }
  
}
@enduml

3.長名字

     使用關鍵字state定義長名字狀態

示例:

 

@startuml
scale 600 width

[*] -> State1
State1 --> State2 : Succeeded
State1 --> [*] : Aborted
State2 --> State3 : Succeeded
State2 --> [*] : Aborted
state State3 {
  state "Accumulate Enough Data\nLong State Name" as long1
  long1 : Just a test
  [*] --> long1
  long1 --> long1 : New Data
  long1 --> ProcessData : Enough Data
}
State3 --> State3 : Failed
State3 --> [*] : Succeeded / Save Result
State3 --> [*] : Aborted
 
@enduml

 

4.並發狀態

     用-- or ||作為分隔符來合成並發狀態

示例:

 

@startuml
[*] --> Active

state Active {
  [*] -> NumLockOff
  NumLockOff --> NumLockOn : EvNumLockPressed
  NumLockOn --> NumLockOff : EvNumLockPressed
  --
  [*] -> CapsLockOff
  CapsLockOff --> CapsLockOn : EvCapsLockPressed
  CapsLockOn --> CapsLockOff : EvCapsLockPressed
  --
  [*] -> ScrollLockOff
  ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
  ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
}

@enduml

 

5.箭頭方向

    使用->定義水平箭頭,也可以用首字母縮寫或者開始的兩個字母定義方向(如, -d--down--do-是完全等價的)

示例:

 

@startuml

[*] -up-> First
First -right-> Second
Second --> Third
Third -left-> Last

@enduml

 

6.顯示參數

     用skinparam改變字體和顏色

示例:

 

@startuml
skinparam backgroundColor LightYellow
skinparam state {
  StartColor MediumBlue
  EndColor Red
  BackgroundColor Peru
  BackgroundColor<<Warning>> Olive
  BorderColor Gray
  FontName Impact
}

[*] --> NotShooting

state "Not Shooting State" as NotShooting {
  state "Idle mode" as Idle <<Warning>>
  state "Configuring mode" as Configuring
  [*] --> Idle
  Idle --> Configuring : EvConfig
  Configuring --> Idle : EvConfig
}

NotShooting --> [*]
@enduml

 

二、《電梯控制》系統《銀行賬戶》系統狀態轉換

電梯控制系統狀態:

    1.電梯共有四種運行狀態:運行、待載、樓間停止

    2.電梯需要判斷目標樓層與當前樓層的大小,如目標樓層大,則關門上行,如若比目標樓層小,則關門下行

    3.電梯如果沒有人使用,則處於待載狀態

銀行賬戶系統狀態:

    1.銀行賬戶共有三種狀態:空額、有余額、負載。

    2.賬戶建立初期沒有存款,處於空額狀態。

    3.賬戶在空額狀態時,如果向其中存款,進入有余額狀態;反之如果取款,則進入負載狀態。

    4.賬戶在有余額狀態時,如果存款,則余額增加,還處於有余額狀態;如果取款,取款金額小於余額,處於有余額狀態,取款金額等於余額,處於有空額狀態,取款金額大於余額,處於負債狀態。

    5.賬戶處於負債狀態時,如果存款,但存款金額小於負債金額,還處於負債狀態,存款金額等於負債金額,處於空額狀態,存款金額大於於負債金額,處於有余額狀態。

三、腳本程序

電梯控制系統

 

@startuml
[*] --> 待載
 
state 運行 {
  待載 --> 上升 : 進入[目標樓層>當前樓層]/關門上行
  上升 --> 樓間停 : [進人/出人]/開門
 
  待載 --> 下降 : 進入[目標樓層<當前樓層]/關門下行
  下降 --> 樓間停 : [進人/出人]/開門

  樓間停 --> 上升:[目標樓層>當前樓層]/關門上行
  樓間停 --> 下降:[目標樓層<當前樓層]/關門下行  
  樓間停 --> 待載:[無人]/關門
}
@enduml

銀行賬戶系統

 

@startuml
state 銀行賬戶系統{

[*] --> 空額
空額--> [*]
 
空額 --> 有余額 : 存款/余額=余額+存款額
空額 --> 負債 : 取款[取款額<最大限額]/余額=余額-存款額

有余額 --> 有余額 : 存款/余額=余額+存款額
有余額 --> 有余額 : 取款[取款額<余額]/余額=余額-取款額
有余額 --> 負債 : 取款[取款額>余額]/余額=余額-取款額
有余額 --> 空額 : 取款[取款額=余額]/余額=余額-取款額

負債 --> 負債 : 取款[取款額<最大限額]/余額=余額-存款額
負債 --> 負債 : 存款[存款額<負債額]/余額=余額+存款額
負債 --> 有余額 : 存款[存款額>負債額]/余額=余額+存款額
負債 --> 空額 : 存款[存款額=負債額]/余額=余額+存款額

}
@enduml

 

四、狀態圖

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM