转换到历史状态-《中国2060年前碳中和研究报告》

时间:2024-06-28 01:03:11
【文件属性】:

文件名称:转换到历史状态-《中国2060年前碳中和研究报告》

文件大小:4.49MB

文件格式:PDF

更新时间:2024-06-28 01:03:11

UML 状态图 实用C设计 实用C++设计 中文全文

5.5 转换到历史状态 5.5.1 目的 从某个组合状态转换出来,但是记住最近的活动子状态,这样在后面你可以返回这个子状态。 5.5.2 问题 在高层组合状态定义的状态转换常常处理那些需要立即关注的事件,然而,在处理完它们后,系统必须 返回给定组合状态的最近的子状态。 例如,考虑一个简单的烤面包炉。通常烤面包炉在它的门被关上时操作。然而,在任何时候,用 户可以打开们去检查食物或者清理炉子。打开炉门是一个中断,为了安全原因,需要关闭加热器并打开 一个内部的炉灯。然而,关闭炉门后,烤面包炉应该恢复去做在门被打开前的事情。这样有一个问题。 在们被打开前烤面包炉在做什么?状态机必须记住在开门前最近的活动状态配置,在炉门被关闭后可以 恢复它。 UML 状态图使用 2 类历史伪装态处理这种情况:浅历史和深历史(见第二章 2.3.12 节)。这 个烤面包炉例子需要深历史机制(标记为图 5.11 里的带有圆圈的 H* )。 QEP事件处理器不自动的 支持所有状态的历史机制,因为它将导致额外的内存和性能成本。然而,为挑选的状态增加这类支持是 很容易的。 5.5.3 解决方法 图 5.11 展示了这个解决方法,它把 doorClosed 状态最近的活动叶子状态存储在一个专用的数据成员 doorClosed_history 里(在图 5.11 里缩写为 history )。然后, doorOpen状态的转换到历史(转换到带 圆圈的 H* )使用这个属性作为这个转换的目标。 图 32转换到历史状态模式 5.5.4 实例代码 转换到历史状态模式的实例代码在目录 \qpc\examples\80x86\tcpp101\l\history\ 。你可以通过双击在 子目录 dbg\ 的文件 HISTORY.EXE来运行它。图 5.13 展示了 HISTORY.EXE程序的产生的输出。程序打 保留中文简体翻译的全部版权 anymcu@gmail.com 2010 187


网友评论