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
state configuring
}@enduml
使用->定義水平箭頭,也可以使用下列格式強制設定箭頭方向:
@startuml
[*] -up-> first
first -right-> second
second --> third
third -left-> last
@enduml
6.注釋:可以用
note left of, note right of, note top of, note bottom of 關鍵字來定義注釋;還可以定義多行注釋
;以及浮動注釋。
顯示引數:
用skinparam
改變字型和顏色。
可以在如下場景中使用:
還可以為狀態的構造型別指定特殊的字型和顏色。
1.以《電梯控制》系統、《銀行賬戶》系統為例,分析系統中的狀態及狀態轉換。
電梯狀態機圖:
電梯存在待載、上公升、下降和樓間停4種基本狀態。電梯無人承載時停在某樓層
,處在待載狀態。當有人進人電梯
,並且當前樓層比目標樓層低
,則電梯上公升。如果當前樓層比目標樓層高
,則電梯下降。在上公升或下降狀態
,如果到了某個目標樓層
,電梯執行停止,進人樓間停狀態
,等待人的進出。如果所有人都在本層下完,電梯回到待載狀態。如果電梯中還有人,則判斷目標樓層是否比當前樓層高,如果高於當前樓層則上公升,如果低於當前樓層則下降。
銀行賬戶狀態機圖:
銀行賬戶存在空額有餘額和負債三種狀態。初建立的賬戶沒有存款,處在空額狀態。賬戶在空額狀態時,如果向其中存款,進人有餘額狀態,如果從賬戶取款,則進人負債狀態。賬戶在有餘額狀態時,如果向賬戶存款,餘額增加
,但仍然還在有餘額狀態。如果從賬戶取款,若取款額小於餘額,賬戶仍在有餘額狀態
;若取款額等於餘額
,則取款後賬戶回到空額狀態
;若取款額大於賬戶餘額,則取款後賬戶進人負債狀態。賬戶處於負債狀態時,如果取款,餘額減少,但仍然處在負債狀態。如果給賬戶存款,當存款額小於負債額,則賬戶仍然在負債狀態
;如果存款額等於負債額
,則存款後賬戶回到空額狀態
;如果存款額大於負債額,存款後賬戶進入有餘額狀態。
2.指令碼及狀態圖
電梯控制:
@startuml
[*] --> 待載
待載 -up-> 上公升
: 進入
[目標樓層
>
當前樓層
]/關門上行
上公升 -down-> 樓間停
: [進人/出人
]/停機開門
待載 -down-> 下降
: 進入
[目標樓層
<
當前樓層
]/關門下行
下降 -up-> 樓間停
: [進人/出人
]/停機開門
樓間停 -up-> 上公升
:[目標樓層
>
當前樓層
]/關門上行
樓間停 -down-> 下降
:[目標樓層
<
當前樓層
]/關門下行
樓間停 -left-> 待載
:[無人
]/關門
@enduml
銀行賬戶
@startuml
[*] --> 空額
空額 -down-> 有餘額
: 存款/餘額
=餘額+存款額
空額 -down-> 負債
: 取款
[取款額
<
最大限額
]/餘額=餘額
-存款額
有餘額 --> 有餘額
: 存款/餘額
=餘額+存款額
有餘額 --> 有餘額
: 取款
[取款額
<
餘額]/餘額=
餘額-取款額有餘額 -right-> 負債
: 取款
[取款額
>
餘額]/餘額=
餘額-取款額有餘額 -up-> 空額
: 取款
[取款額=餘額
]/餘額=餘額
-取款額
負債 --> 負債
: 取款
[取款額
<
最大限額
]/餘額=餘額
-存款額
負債 --> 負債
: 存款
[存款額
<
負債額]/餘額=
餘額+存款額負債 -left-> 有餘額
: 存款
[存款額
>
負債額]/餘額=
餘額+存款額負債 -up-> 空額
: 存款
[存款額
=負債額
]/餘額=餘額
+存款額
空額 -up-> [*]
@enduml
第五次作業
一 問題及 include using namespace std class time void add a minute void add an hour void add seconds int n void add minutes int n void add hours int n voi...
第五次作業
當我們在討論多型性的時候,通常會用過載函式進行舉例,而這次發現的問題主要在過載運算子上,因此我希望通過對過載運算子的測試來得出乙個結論。我們想知道為什麼前置運算子和後置運算子會有區別,因此設計了乙個實驗來證明它 得到最終結果如預期那樣。通過這次作業,我能感受到前置和後置運算子的區別,通過x 和y x...
第五次作業
insert into student sno,sname,s sdept,sage values 201215128 陳冬 男 is 18 建表時規定學號唯一,而在建表時已經加入了該學號,所以不能有兩個相同學號。3.70 insert into student sno,sname,s sdept,...