当前位置:网站首页>EA&UML日拱一卒-状态图::重画按钮状态图
EA&UML日拱一卒-状态图::重画按钮状态图
2022-07-29 23:41:00 【51CTO】
按钮处理模块的状态图,在前面的文章中已经说明过了,但是当我们对信号系统引擎建模时,发现当初的设计并不能满足需求,所以需要对已经完成的模型进行修改。
这样的修改在软件开发过程中经常出现,需要做的不是抑制这种修改,而是让这种修改尽量早的发生。这也是建模的一个作用。
在前面的例子中,希望将停止按钮和行人通过请求按钮用一个时序图表达出来,结果导致两种情况都不合适。本文采用另一种策略:
- 设计标准按钮处理的状态图,停止按钮可以适用该状态图
- 行人通过请求按钮模块对标准按钮模块进行扩展
标准按钮模块状态机

Work状态
装置工作状态,在这个状态中包含有效和无效两个子状态。Work状态中如果接受到Shutdown要求,则迁移到完了状态。从UML状态机的语义来讲,无论状态处于Working的那个子状态,上述迁移都有效。
Disable状态
设备不接受用户按钮操作。接受到DeviceEnable事件之后,向Enable状态迁移。
Enable状态
接受DeviceDisable事件以后,向Disable状态迁移;接收到按钮按下事件时,向Disable状态迁移,但同时发送按钮按下事件。
如果和之前的按钮装置状态图比较,应该可以看出这个方案更清晰,重点也更突出。
行人通过请求按钮状态机

首先和标准按钮模块状态图进行一下比较,可以看出区别在于Enable状态又进一步细化,同时相应的迁移也发生了变化。以下只说明增加的部分。
LaterReportWait状态
本状态中如果用户按下按钮,不会立即发送按钮按下事件,而是向CmdReady状态迁移。如果接收到SetInstantReport通知,则向InstantReportWait状态迁移。
InstantReportWait状态
本状态中接收到按钮按下事件时,向Disable状态迁移,但同时发送按钮按下事件。
CmdReady状态
进入本状态就意味着,用户按下了请求按钮。当接收到HandlerReady事件时,向Disable状态迁移,但同时发送按钮按下事件。
补充说明
虽然文章发出的次序有先后,但实际上信号系统引擎模块和行人通过请求按钮模块和的状态图是同时设计,同时完成的。当然也可以先后完成。
在前一篇说明按钮模块的文章中设计的状态图虽然被大幅度修改的,但是面向对象的思想却是不变的。
参考资料:
14.2 Behavior StateMachines (6)--子状态机状态
14.2 Behavior StateMachines (10) --记法
打开方法如下:
- 进入【面向对象思考】 公众号
- 打开【UML】-【UML2.5中文译文】菜单
- 选择【状态图】分类
- 选择相关文章
写在文章的最后
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

边栏推荐
- Single chip ds1302 clock program (51 single chip liquid crystal display program)
- Dropout回顾
- 环形链表(LeetCode 141、142)
- MQTT over QUIC: The Next-Generation IoT Standard Protocol Brings New Impetus to Messaging Scenarios
- MySQL active/standby switch
- Design for failure常见的12种设计思想
- go语言序列化和反序列化及序列化后的json为空和json的key值大写如何改为小写问题
- esp12f + tft 显示图片问题
- 【openlayers】Map【1】
- MySQL【基本select语句】
猜你喜欢
随机推荐
JetsonNano learning (5) JetsonNano installs PyTorch and Torchvision
C陷阱与缺陷 第5章 库函数 5.2更新顺序文件
[leetcode] 82. Delete duplicate elements in sorted linked list II (medium)
Redis系列:高可用之Sentinel(哨兵模式)
Farmers on the assembly line: I grow vegetables in a factory
idea设置自动去除未引用(不再引用)的引用
[leetcode] 75. Color classification (medium) (double pointer, in-situ modification)
全网最强 JVM 来袭!(至尊典藏版)
仿牛客论坛项目部署总结
【openlayers】地图【一】
logback过期日志文件自动删除
Windows 安装 MySQL 5.7详细步骤
玻璃表面修饰DNA|DNA修饰的上转换纳米材料|DNA-UCNPs实验原理
全国双非院校考研信息汇总整理 Part.2
devops学习(十) Jenkins 流水线
全国双非院校考研信息汇总整理 Part.1
MySQL函数(经典收藏)
纳米金颗粒修饰核酸产品|碳纳米管载核酸-DNA/RNA材料|解析说明
决策树原理及代码实现
全国双非院校考研信息汇总整理 Part.4









