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

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

一、状态图 语法小结

简单状态

使用([*])开始和结束状态图。使用-->添加箭头。

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

更改呈现状态

可以使用隐藏空描述将状态呈现为简单框

@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

注释

可以用 note left of, note right of, note top of, note 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

更多注释

可以在合成状态中放置注释

@startuml[*] --> NotShootingstate "Not Shooting State" as NotShooting {  state "Idle mode" as Idle  state "Configuring mode" as Configuring  [*] --> Idle  Idle --> Configuring : EvConfig  Configuring --> Idle : EvConfig}note right of NotShooting : This is a note on a composite state@enduml

显示参数

用skinparam改变字体和颜色:

  • 在图示的定义中
  • 在引入的文件中
  • 在命令行或者ANT任务提供的配置文件中

还可以为状态的构造类型指定特殊的字体和颜色

@startumlskinparam backgroundColor LightYellowskinparam state {  StartColor MediumBlue  EndColor Red  BackgroundColor Peru  BackgroundColor<
> Olive BorderColor Gray FontName Impact}[*] --> NotShootingstate "Not Shooting State" as NotShooting { state "Idle mode" as Idle <
> state "Configuring mode" as Configuring [*] --> Idle Idle --> Configuring : EvConfig Configuring --> Idle : EvConfig}NotShooting --> [*]@enduml

二、《电梯控制》系统、《银行账户》系统

(1)电梯控制

  1. 电梯存在待载、上升、下降、和楼间停4钟基本状态。
  2. 电梯无人承载时停在某一楼层,处在待载状态。
  3. 当有人进入电梯,并且当前楼层比目标楼层低,电梯上升。
  4. 当前楼层比目标楼层高,电梯下降。
  5. 所有人都在本层下电梯,电梯回到待载状态。
  6. 电梯中还有人,判断目标楼层是否比当前楼层高,高则上升,低则下降。

(2)银行账户

  1. 银行账户存在空额、有余额、负债三种状态。
  2. 初建立的账户没有存款,处于空额状态。
  3. 空额状态,向其中存款,进入有余额状态;从账户取款,进入负债状态。
  4. 在有余额状态时,向账户存款,余额增加,但还是处于有余额状态。
  5. 账户取款,取款额小于余额,处于有余额状态;等于余额,回到空额状态;大于余额,进入负债状态。
  6. 负债时,取款,余额减少,还是负债状态;存款,存款额小于负债额,还是负债;存款额等于负债额,回到空额状态;存款额大于负债额,进入有余额状态。

电梯系统:

@startuml[*] --> 待载  待载 --> 上升:进入[目标楼层>当前楼层]/关门上行 待载 --> 下降:进入[目标楼层
<当前楼层] 关门下行 上升 ->
楼间停:[进人/出人]/停机开门 下降 -> 楼间停:[进人/出人]/停机开门 楼间停 -> 上升:[目标楼层>当前楼层]/关门上行 楼间停 -> 下降:[目标楼层
<当前楼层] 关门下行 楼间停 -left->
待载:[无人]/关门@enduml

银行系统:

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

 

转载于:https://www.cnblogs.com/zpp502/p/10800460.html

你可能感兴趣的文章
ssh-keygen -t rsa -f cloud.key ssh -i cloud.key <username>@<instance_ip>
查看>>
培训机构管理系统帮助机构解决管理问题
查看>>
我的友情链接
查看>>
DISCUZ官方论坛模仿开发日志(二)
查看>>
Java设计模式系列之策略模式
查看>>
Sql异常①
查看>>
Jquery 校验文本框只能输入负数、小数、整数
查看>>
fanc委托在项目中使用
查看>>
PHP 命名空间
查看>>
层次分析法
查看>>
[转] xgboost
查看>>
ASP.NET一些常用的东西
查看>>
音乐播放类应用后台播放耗电评测报告
查看>>
2015百度之星 单调区间
查看>>
项目经理之什么是项目管理
查看>>
Ubuntu安装Chrome的方法
查看>>
用批处理来操纵你的光驱
查看>>
SQL 问题记录
查看>>
vim修改时自动备份配置文件小脚本
查看>>
我的友情链接
查看>>