请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1~问题2。 [说明]
请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1~问题2。
[说明]
传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-15所示。
下面的[C++代码1]与[C++代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。
[C++代码1]
请将以上[C++代码1]与[C++代码2]程序段中的(1)~(7)空缺处的语句填写完整。
这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生crick事件时进行状态转换”可知,(1)空缺处所在的方法为click,表示当发生crick事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-15)与crick事件相关的内容,并特别注意箭头所指的方向。由于发生click事件前的状态CLOSED、CLOSING分别跳转到状态OPENING,因此(1)空缺处所填写的内容是“state==CLOSED‖state==CLOSING”。 同理,由图7-15所示中的状态转换关系可知,发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING,即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生 click事件前的状态OPEN跳转到状态STAYOPEN,即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[C++代码2]程序段,由语句private DoorState state=CLOSED;可知,类Door的state成员变量用于记录类Door所处的状态,而state变量的类型为Doorstate*。由语句“virtual void click() {}”、“virtual void complete() {}”和“virtual void timeout() {}”可知,Doorstate中分别具有click、timeout和 complete方法用来响应对应的事件。根据(4)空缺处所在程序段“void Door∷click()”可得,(4)空缺处所填写的内容是“state->click()”。 同理,根据(5)空缺处所在程序段“void Door∷timeout()”可得,(5)空缺处所填写的内容是“state->timeout()”;根据(6)空缺处所在程序段“void Door∷complete()”可得,(6)空缺处所填写的内容是“state->complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“void DoorClosed∷click()”可知,(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合如图7-16所示中的状态转换关系可知,在Click事件下CLOSED状态将迁移到 OPENING,因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例,因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示,故(7)空缺处所填写的内容为“door->setState(door->OPENING)”。
比较根号5+根号2与根号3+2的大小关系可以将它们分别平方进行比较么如下根号5²=5根号3²=3根 数学 2020-05-14 …
计算1/(1+根号2)+1/(根号2+根号3)+……+1/(根号99+根号100) 数学 2020-05-15 …
(2倍根号5+1)乘(1+根号2分之1+根号2+根号3分之1+…+根号99+根号100分之1) 数学 2020-05-15 …
两道关于实数的计算题急求答案(1)根号下2+3根号下2-5根号下2(2)|根号下3-根号下2|+| 数学 2020-06-06 …
关于护理诊断的描述方式,错误的是: ()A.问题+症状+原因B.问题+原因C.原因+症状D.问题(某 职业技能鉴定 2020-06-07 …
设xyz满足根号(3x+y-z-2)+根号(2x+y-z)=根号(x+y-2014)+根号(204 数学 2020-06-12 …
已知▲ABC的三边长a,b,c满足a的平方+b+(根号下c-1的值-2)的绝对值=10a+根号下b 数学 2020-07-11 …
根号内怎么微分?比如y=根号(X^2+3x+2)和y=根号(X^2+3x+6)+根号(X+1) 数学 2020-07-31 …
问几道数学题1.已知X是7-根号11的小数部分,Y是4+根号11的小数部分,求XY+7X的值.2. 数学 2020-08-02 …
根据“转基因鼠的启示”答题:(1)图为转基因超级鼠的产生过程,在这项研究中,被研究的性状是,控制这个 语文 2020-11-02 …