UML状态图的实用C/C++设计(QP状态机)-笔记一

本文介绍了UML状态图的表示方式,强调了状态嵌套的重要性和如何排除状态重复。同时,文章详细讨论了QP框架的事件处理机制,包括直接发送和发行-订阅两种方式,并解释了QF如何处理线程安全的事件交换。此外,文中还探讨了C语言中结构单继承实现事件的策略,以及在QP框架下如何设计和使用状态机。
摘要由CSDN通过智能技术生成

QP官网网址:http://www.state-machine.com

本书下载地址:

笔记有点乱,没办法,书里也是断断续续的介绍。

 

UML:

UML状态图:状态用节点表示,转换用弧线连接在节点间。状态节点用圆角方框表示。状态名用粗体,写在状态框顶部的名字格里。在名字下面有一个可选的内部转换格,用一条水平线分开。内部转换格包含进入动作内部转换格包含进入动作(在保留符号entry后的动作)退出动作(在保留符号 exit 后的动作)和其他内部转换(比如在图中里被 TIME_TICK触发的那些动作)。状态转换用从源状态边界指向目的状态边界的箭头表示。最低要求,一个转换必须用触发事件来做标签。触发可以有可选的多个事件参数,一个监护条件和一个动作列表。

最终状态在 UML 符号里是牛眼 (bull’s eye) 符号,通常的用法是指示状态机对象的析构(destruction)。

                                      

                                                                      图1 状态图示例

        状态嵌套的威力在于它被设计于用来排除可能会发生的重复。高层的active 状态被称为超状态 (superstate) ,它的抽象定义是,状态机不能直接在这个状态里,只能在它里面嵌套的某一个状态里,这个状态被称为活动子状态。 UML 和状态嵌套有关的语法说明,任何事件先被当前正在活动的子状态 (substate) 处理,如果这个子状态不能处理这个事件,状态机尝试在较高一层超状态的上下文处理这个事件。当然, UML 里的状态嵌套不限于仅一层,而且,这个处理事件的简单规则可以递归的应用于任何多层的嵌套。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值