当前位置: 首页 > 问题分类 > 计算机类考试 > 软考中级 > 问题详情
问题

请仔细阅读以下关于某传输系统的技术说明、状态转换图及Java程序,根据要求回答问题1~问题2。

[说明]

传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-16所示。

下面的[Java代码1]与[Java代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。

[Java代码1]

请将以上[Java代码1]与[Java代码2]程序段中,(1)~(7)空缺处的语句填写完整。

参考答案
正确答案:这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生click事件时进行状态转换”可知(1)空缺处所在的方法为click表示当发生click事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-16)与click事件相关的内容并特别注意箭头所指的方向。由于发生click事件前的状态 CLOSED、CLOSING分别跳转到状态OPENING因此(1)空缺处所填写的内容是“state==CLOSED‖state ==CLOSING”。 同理由图7-16所示中的状态转换关系可知发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生click事件前的状态OPEN跳转到状态STAYOPEN即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[Java代码2]程序段由语句private DoorState state=CLOSED;可知类Door的state成员变量用于记录类Door所处的状态而state变量的类型为Doorstate。由语句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知Doorstate中分别具有click、timeout和complete方法用来响应对应的事件。根据(4)空缺处所在程序段给出的注释信息“发生click事件时进行状态转换”可得(4)空缺处所填写的内容是“state.click()”。 同理根据(5)空缺处的注释信息——“发生timeout事件时进行状态转换”可得(5)空缺处所填写的内容是“state.timeout()”;根据(6)空缺处的注释信息——“发生complete事件时进行状态转换”可得(6)空缺处所填写的内容是“state.complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“public void click()”可知(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合图7-16所示中的状态转换关系可知在Click事件下CLOSED状态将迁移到OPENING因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示故(7)空缺处所填写的内容为“door.setState(door.OPENING)”。
这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生click事件时进行状态转换”可知,(1)空缺处所在的方法为click,表示当发生click事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-16)与click事件相关的内容,并特别注意箭头所指的方向。由于发生click事件前的状态 CLOSED、CLOSING分别跳转到状态OPENING,因此(1)空缺处所填写的内容是“state==CLOSED‖state ==CLOSING”。 同理,由图7-16所示中的状态转换关系可知,发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING,即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生click事件前的状态OPEN跳转到状态STAYOPEN,即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[Java代码2]程序段,由语句private DoorState state=CLOSED;可知,类Door的state成员变量用于记录类Door所处的状态,而state变量的类型为Doorstate。由语句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知,Doorstate中分别具有click、timeout和complete方法用来响应对应的事件。根据(4)空缺处所在程序段给出的注释信息“发生click事件时进行状态转换”可得,(4)空缺处所填写的内容是“state.click()”。 同理,根据(5)空缺处的注释信息——“发生timeout事件时进行状态转换”可得,(5)空缺处所填写的内容是“state.timeout()”;根据(6)空缺处的注释信息——“发生complete事件时进行状态转换”可得,(6)空缺处所填写的内容是“state.complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“public void click()”可知,(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合图7-16所示中的状态转换关系可知,在Click事件下CLOSED状态将迁移到OPENING,因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例,因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示,故(7)空缺处所填写的内容为“door.setState(door.OPENING)”。
您可能感兴趣的试题
  • 设有关系R(A,B,C)和S(B,C,D),那么与RS等价的关系代数表达式是______。

    A.σ3=5(RS)

    B.π1,2,3,6 (σ3=5(RS))

    C.σ3=5∧2=4 (R×S))

    D.π1,2,3,6 (σ3=2∧2=1 (R×S))

  • 浮点数的表示范围和精度取决于______。

    A.阶码的位数和尾数的位数

    B.阶码采用的编码和尾数的位数

    C.阶码的位数和尾数采用的编码

    D.阶码采用的编码和尾数采用的编码

  • 两个不同类型的计算机网络能相互通信是因为( )

    A.他们都符合OSI模型

    B.他们都使用TCP/IP

    C.他们都使用兼容的协议组

  • 我国计算机信息系统实行______保护。(单选)

    A.主任值班制

    B.安全等级

    C.责任制

    D.专职人员资格

×
验证