EA&UML日拱一卒-状态图::面向对象的另一种理解

针对车辆的数字式信号的状态机设计完成之后,按道理可以继续设计标准的车辆信号或者行人等等。但是如果你回头看看数字式车辆信号的设计,应该可以明白:它们其实都是大同小异。所以这部分就留给大家可以自己设计了。


本文说明按钮(包括系统停止按钮和行人通过请求按钮)的状态机设计。


面向对象


在考虑按钮的状态机的时候可
以有两种视角:信号系统的视角和按钮装置的视

角。


如果按照信号系统需求来建模,识别出来的状态就是道路1通行,道路1停止一类的结果。由于停止按钮和行人通过按钮关注的点不同,识别出来的状态也就不相同,无法共通。


如果考虑了系统需求之后按照按钮装置的观点来建模,识别出来的状态就是,按钮无效状态,按钮有效状态,请求有效状态等,这时停止按钮和行人按钮的处理就可以共通。


收集需求时使用利用者观点,建模时使用功能提供者观点。这也算是一种面向对象吧。虽然这种解释只是作者的一种扩大解释,但是作为大家在分析系统,对系统建模时的一种考虑问题的角度绝对是有益无害的。


按钮装置状态机


结合停止按钮和行人通过请求按钮的需求,按照面向对象(按钮装置)的观点,建模如下:


EA&UML日拱一卒-状态图::面向对象的另一种理解


Disable状态:设备不接受用户按钮操作。接受到DeviceEnable事件之后,向Enable状态迁移;如果接受到ShutDown事件,经由Junction伪状态向ExitPoint迁移。


Enable状态:检测到用户按钮按下以后,向CmdReady状态迁移;接受DeviceDisable事件以后,向Disable状态迁移;如果接受到ShutDown事件,经由Junction伪状态向ExitPoint迁移。


CmdReady状态:接受到HandlerReady事件后,发送Command信号之后向Disable状态迁移;接受DeviceDisable事件以后,向Disable状态迁移;如果接受到ShutDown事件,经由Junction伪状态向ExitPoint迁移。


关于连接点(Junction)


连接点-这种类型的伪状态用于将状态之间的多个迁移连接成复合路径。例如,合并伪状态可以用来将多个进入迁移合并成一个离开迁移,通过这种方式表现后续路径分享。也可以用于将一个进入迁移分成多个离开迁移,这些离开迁移通过不同的监护约束选择。

--UML2.5 14.2.3.7 Pseudostate and PseudostateKind

(伪状态和伪状态种类)


参考资料:


14.2 Behavior StateMachines (7)--Juction

14.2 Behavior StateMachines (10) --记法


打开方法如下:

  1. 进入【面向对象思考】 公众号  

  2. 打开【UML】-【UML2.5中文译文】菜单

  3. 选择【状态图】分类

  4. 选择相关文章


写在文章的最后


既然已经读到这里了,拜托大家再用一分钟时间,将文章转发到各位的朋友圈,微信群中。希望有更多需要的人读到本公众号里的文章,这里先谢过了!

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】
EA&UML日拱一卒-状态图::面向对象的另一种理解