博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UML作业第五次:分析系统,绘制状态图
阅读量:6237 次
发布时间:2019-06-22

本文共 3282 字,大约阅读时间需要 10 分钟。

    分析电梯控制系统和银行账户系统,分别画出状态图

一、PlantUML状态图 语法学习小结。

使用([*])开始和结束状态图。

使用-->添加箭头。

@startuml[*] --> State1State1 --> [*]State1 : this is a stringState1 : this is another stringState1 -> State2State2 --> [*]@enduml

 

 

Change state rendering

You can use hide empty description to render state as simple box.

@startumlhide empty description[*] --> State1State1 --> [*]State1 : this is a stringState1 : this is another stringState1 -> State2State2 --> [*]@enduml

 

 

合成状态

一个状态也可能是合成的,必须使用关键字state和花括号来定义合成状态。

@startumlscale 350 width[*] --> NotShootingstate 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

 

 

长名字

也可以使用关键字state定义长名字状态。

@startumlscale 600 width[*] -> State1State1 --> State2 : SucceededState1 --> [*] : AbortedState2 --> State3 : SucceededState2 --> [*] : Abortedstate 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 : FailedState3 --> [*] : Succeeded / Save ResultState3 --> [*] : Aborted @enduml

 

 

并发状态

-- or ||作为分隔符来合成并发状态。

@startuml[*] --> Activestate Active {  [*] -> NumLockOff  NumLockOff --> NumLockOn : EvNumLockPressed  NumLockOn --> NumLockOff : EvNumLockPressed  --  [*] -> CapsLockOff  CapsLockOff --> CapsLockOn : EvCapsLockPressed  CapsLockOn --> CapsLockOff : EvCapsLockPressed  --  [*] -> ScrollLockOff  ScrollLockOff --> ScrollLockOn : EvCapsLockPressed  ScrollLockOn --> ScrollLockOff : EvCapsLockPressed}@enduml

 

 

箭头方向

使用->定义水平箭头,也可以使用下列格式强制设置箭头方向:

  • -down-> (default arrow)
  • -right-> or ->
  • -left->
  • -up->
@startuml[*] -up-> FirstFirst -right-> SecondSecond --> ThirdThird -left-> Last@enduml

可以用首字母缩写或者开始的两个字母定义方向(如, -d--down--do-是完全等价的)。

请不要滥用这些功能,Graphviz不喜欢这样。

 

 

注释

可以用 note left ofnote right ofnote top ofnote bottom of 关键字来定义注释。

还可以定义多行注释。

@startuml[*] --> ActiveActive --> Inactivenote left of Active : this is a short\nnotenote right of Inactive  A note can also  be defined on  several linesend note@enduml

以及浮动注释。

@startumlstate foonote "This is a floating note" as N1@enduml

 二、分别语言描述《电梯控制》系统、《银行账户》系统 状态转换。

 

电梯控制状态

 

电梯存在待载,上升,下楼,楼间的状态。电梯无人承载会停在某一曾楼,处在待载状态。当有人进入电梯时,并且当前楼层比目标楼层低,则电梯上升。如果当前楼层比目标楼层高时,电梯下降。在上升或者下降状态,如果到达了某个楼层,电梯停止运行,进入间停状态,等待人的进出。如果所有人都在本楼层下完,电梯回到待载状态。

 

银行账户状态

银行账户存在空额,有余额,负债三种状态。初建立的账户没有存款,处在空额状态。账户在空额状态时,如果向其中存款,进入余额状态,如果从账户取款,则进入负债状态。账户在余额状态时,如果向账户存款,余额会增加,但仍处于余额状态。如果从账户取款,若取款额小于余额,账户在余额状态。若取款等于余额,则取款后账户回到空额状态。若余款额大于账户余额,则取款额账户进入负债状态。

 

三、分别用PlantUML的绘制《电梯控制》系统、《银行账户》系统状态转换的脚本程序

 电梯控制

 

@startuml

[*] -> 待载    

上升 -> 楼间停:[进人/出人]/停机开门  

下降 -> 楼间停:[进人/出人]/停机开门

 待载 --> 上升:进入[目标楼层>当前楼层]/关门上行

 待载 --> 下降:进入[目标楼层<当前楼层]/关门下行    

 楼间停 -> 上升:[目标楼层>当前楼层]/关门上行

 楼间停 -> 下降:[目标楼层<当前楼层]/关门下行  

楼间停 -> 待载:[无人]/关门

@enduml

 

银行账户

@startuml

空额--> 有余额:存款/余额=余额+存款额 
空额--> 负债取款:[取款额<最大限额]/余额=余额-存款额
有余额-left-> 有余额:存款/余额=余额+存款额 
有余额-right->有余额:取款[取款额<余额]/余额=余额-取款额
负债-> 负债:取款[取款额<最大限额]/余额=余额-存款额
负债->负债 
负债-->有余额 
有余额-->负债 
有余额-->空额 
负债-->空额
[*] ->空额 
空额-left-> [*]
@enduml

 

 

四、我的图

 

 

转载于:https://www.cnblogs.com/Qinyuzhou/p/10855970.html

你可能感兴趣的文章
Expect的安装配置及简单测试脚本
查看>>
HBase Compact && Split
查看>>
我的友情链接
查看>>
OA系统失败之一技术缺陷
查看>>
售前工程师的成长---一个老员工的经验之谈(四)(转载)
查看>>
UIAlertView总结
查看>>
开源 java CMS - FreeCMS2.8 自定义标签 infoList
查看>>
jsp部署tomcat,集成MyEclipse
查看>>
关于symfony的serivce存在的意义
查看>>
1、SpringBoot+MybatisPlus整合
查看>>
面向sql编程
查看>>
Kubernetes之kubectl常用命令使用指南:2:故障排查
查看>>
Facebook测试新信息系统 陌生人发信收费1美元
查看>>
linux系统批量修改root用户密码
查看>>
使用python的paramiko包的RequirementParseError问题
查看>>
WdOS系统下源代码编译安装PHP(搭配nginx运行)
查看>>
SpringBoot整合Scala构建Web服务
查看>>
Gradle简介和安装
查看>>
使用Jmeter开发app端接口自动化案例实战
查看>>
[转载] 英语科技论文写作——Method and Methodology
查看>>