一、学习PlantUML状态图绘制方法,学习状态图

(1)简单状态

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

使用-->添加箭头。

@startuml[*] --> State1
State1 --> [*]
State1 : this is a string
State1 : this is another stringState1 -> State2
State2 --> [*]@enduml

(2)合成状态

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

@startuml
scale 350 width
[*] --> NotShootingstate NotShooting {[*] --> IdleIdle --> Configuring : EvConfigConfiguring --> Idle : EvConfig
}state Configuring {[*] --> NewValueSelectionNewValueSelection --> NewValuePreview : EvNewValueNewValuePreview --> NewValueSelection : EvNewValueRejectedNewValuePreview --> NewValueSelection : EvNewValueSavedstate 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 long1long1 : Just a test[*] --> long1long1 --> long1 : New Datalong1 --> ProcessData : Enough Data
}
State3 --> State3 : Failed
State3 --> [*] : Succeeded / Save Result
State3 --> [*] : Aborted@enduml

(4)并发状态

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

@startuml
[*] --> Activestate Active {[*] -> NumLockOffNumLockOff --> NumLockOn : EvNumLockPressedNumLockOn --> NumLockOff : EvNumLockPressed--[*] -> CapsLockOffCapsLockOff --> CapsLockOn : EvCapsLockPressedCapsLockOn --> CapsLockOff : EvCapsLockPressed--[*] -> ScrollLockOffScrollLockOff --> ScrollLockOn : EvCapsLockPressedScrollLockOn --> ScrollLockOff : EvCapsLockPressed
}@enduml

(5)箭头方向

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

  • -down-> (default arrow)
  • -right-> or ->
  • -left->
  • -up->
@startuml[*] -up-> First
First -right-> Second
Second --> Third
Third -left-> Last@enduml可以用首字母缩写或者开始的两个字母定义方向(如, -d--down--do-是完全等价的)。请不要滥用这些功能,Graphviz不喜欢这样。

(6)注释

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

还可以定义多行注释。

@startuml[*] --> Active
Active --> Inactivenote left of Active : this is a short\nnotenote right of InactiveA note can alsobe defined onseveral lines
end note@enduml

以及浮动注释。

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

(7)更多注释

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

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

(8)显示参数

skinparam改变字体和颜色。

可以在如下场景中使用:

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

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

@startuml
skinparam backgroundColor LightYellow
skinparam state {StartColor MediumBlueEndColor RedBackgroundColor PeruBackgroundColor<<Warning>> OliveBorderColor GrayFontName Impact
}[*] --> NotShootingstate "Not Shooting State" as NotShooting {state "Idle mode" as Idle <<Warning>>state "Configuring mode" as Configuring[*] --> IdleIdle --> Configuring : EvConfigConfiguring --> Idle : EvConfig
}NotShooting --> [*]
@enduml

二、以《电梯控制》系统、《银行账户》系统为例,分析系统中的状态。

(1)电梯控制

  • 电梯存在四种基本状态,即:待载、上升、下降、楼间停;
  • 电梯无人承载时停在某一楼层,处于待载状态;
  • 当有人进入电梯,并且当前楼层比目标楼层低,电梯上升;
  • 当有人进入电梯,并且当前楼层比目标楼层高,电梯下降;
  • 所有人都在本层下电梯,电梯回到待载状态。
  • 电梯中还有人,判断目标楼层是否比当前楼层高,高则上升,低则下降。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@startuml
[*] --> 待载
  
 待载 --> 上升:进入[目标楼层>当前楼层]/关门上行
 待载 --> 下降:进入[目标楼层<当前楼层]/关门下行
  
 上升 -> 楼间停:[进人/出人]/停机开门
 下降 -> 楼间停:[进人/出人]/停机开门
  
 楼间停 -> 上升:[目标楼层>当前楼层]/关门上行
 楼间停 -> 下降:[目标楼层<当前楼层]/关门下行
 楼间停 -left-> 待载:[无人]/关门
@enduml

(2)银行账户

  • 银行账户存在三种状态,即:空额、有余额、负债;
  • 初建立的账户没有存款,处于空额状态;
  • 若在空额状态时向账户存款,则进入有余额状态;若在空额状态时从账户取款,进入负债状态;
  • 在有余额状态时向账户存款,余额增加,但还是处于有余额状态;
  • 从账户中取款,若取款额小于余额,处于有余额状态;等于余额,回到空额状态;大于余额,进入负债状态;
  • 负债时,取款则余额减少,仍处于负债状态;存款,当存款额小于负债额,还是负债;存款额等于负债额,回到空额状态;若存款额大于负债额,进入有余额状态 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@startuml
[*] -> 空额
 空额 -> [*]
  
空额 --> 有余额:存款/余额=余额+存款额
空额 --> 负债:取款[取款额<最大限额]/余额=余额-存款额
有余额 -> 有余额:存款/余额=余额+存款额
 有余额 -> 有余额:取款[取款额<余额]/余额=余额-取款额
有余额 --> 负债:取款[取款额>余额]/余额=余额-取款额
有余额 --> 空额:取款[取款额=余额]/余额=余额-取款额
 负债 -> 负债
 负债 --> 有余额
 负债 --> 空额
@enduml

  

转载于:https://www.cnblogs.com/czw1474845059-/p/10827305.html

UML与软件建模 第五次作业相关推荐

  1. UML与软件建模 第三次作业

    1.单元测试的任务有哪些? 单元测试是对软件基本组成单元进行的测试,而且软件单元是与程序的其他部分相隔离的情况下进行独立的测试. 任务主要包括对单元功能.逻辑控制.数据和安全性等各方面进行必要的测试. ...

  2. UML面向对象软件建模复习题库

    UML软件建模复习题前五章 第一章自测 1 [ 单选题 ]开发人员说"根据客户的需求,我们的系统分为销售子系统.库存子系统.财务子系统--",这句话反映了开发人员可能有什么样的认识 ...

  3. UML与软件建模之面向对象的软件建模概述

    好久没有写写新东西了,最近闲下来了,看了一本名叫<URL与软件建模>这边书,感觉里面讲的不错,现在将我学习到的东西和大家做一个简单的分享. 横竖都是写,建模和不建模有什么区别呢?如果你是一 ...

  4. 【软件建模与UML】(持续更新)

    目录 2 统一建模语言UML 2.1 软件建模简介 2.1.1 什么是模型 2.1.2 建模的重要性 2.1.3 建模的基本原理 2.2 UML简述 2.3 UML的发展历史 2.3.1 UML的出现 ...

  5. 建模语言UML在软件开发中的应用

      建模语言 UML 在软件开发中的应用 摘要:UML( Unified Modeling Language)是建立系统模型和分析业务处理流程强有力的工具,它能够帮助软件开发人员从不同角度描述系统,使 ...

  6. 【基于UML软件建模的在线学习平台】

    文章目录 开发背景与意义 一.需求分析 学生功能结构 教师功能结构 二.部分课程设计报告 总结 开发背景与意义 随着教育事业的改革,国家对高等教学逐渐得到重视.但是传统的高校间教学教育无法在学生与老师 ...

  7. 【软件建模与UML】

    文章目录 第二章 统一建模语言UML 2.1 软件建模简介 2.1.1 什么是模型 2.1.2 建模の重要性 2.1.3 建模的基本原理 2.2 UML简述 ~~2.3 UML的发展历史(略)~~ 2 ...

  8. 《软件建模与设计: UML、用例、模式和软件体系结构》一一2.10 UML扩展机制

    本节书摘来自华章计算机<软件建模与设计: UML.用例.模式和软件体系结构>一书中的第2章,第2.10节,作者:(美)Hassan Gomaa,更多章节内容可以访问云栖社区"华章 ...

  9. 第五次作业——软件设计

    第五次作业--软件设计 在开始软件设计之前,首先确定软件设计中的各个模块需要考虑的任务,绘制概要图如下: 下面根据上述各个模块,逐层进行软件设计: 一.概要设计 首先,概要设计的目的是确定软件的结构以 ...

最新文章

  1. 计算机二级考试题未来教育里占多少,计算机二级笔试试题未来教育版.doc
  2. 学生科技周的讲座-2021-内容准备
  3. Linux下使用stat命令所显示出来的三个时间
  4. 全球与中国激光投影设备市场前景规划与发展战略建议报告2022-2028年版
  5. 容器源码分析之TreeMap(十)
  6. 前端开发者必备的20个文档和在线工具
  7. 云图说|云数据库MySQL内核小版本升级全攻略
  8. 做自媒体培训赚的盆满钵满
  9. Netflix Media Database - 架构设计和实现
  10. url传参的编码与解码
  11. [案例4-6]研究生薪资管理
  12. 常见电容引脚正负极识别大全
  13. VSCode XML文件格式化
  14. word2vec理解及pytorch实现
  15. 现代数据库及大数据管理—常见问题与技术归纳
  16. oled显示模块ssd1306
  17. PTA 6-6 使用函数计算两个复数之积
  18. 数据规整化:清理、转换、合并、重塑 《用Python进行数据分析》读书笔记第7章
  19. 基于PLC控制四自由度气动式机械手设计
  20. 数据禾|中国主要山脉及山峰分布数据

热门文章

  1. java中json对象去重复_如何忽略Java中JSON对象的多个属性?
  2. java 企业级应用设计规范_一步一步理解Java 企业级应用的可扩展性
  3. 服务器和linux知识,每天学知识:Windows和Linux服务器差异
  4. vscode remote免密登录
  5. 1.9 GRU 单元
  6. Linux 硬盘管理
  7. 陕西省2021年高考成绩位次查询,2021年陕西高考个人排名怎么查询,陕西高考成绩排名查询方法...
  8. 顺丰不行了吗?对快递行业的深度理解
  9. CVE-2020-1472 | Netlogon 特权提升漏洞预警
  10. java二维数组模拟用户登录_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)...