试题与答案

【说明】 传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关

题型:问答题

题目:

【说明】 传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening (正在打开)、StayOpen(保持打开)和Closing(正在关闭)五种状态。触发状态的转换事件有click、complete和timeout三种。事件与其相应的状态转换如下图所示。

下面的Java代码1与Java代码2分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。【Java代码1】 public class Door { public static final int CLOSED = 1; public static final int OPENING = 2; public static final int OPEN = 3; public static final int CLOSING = 4; public static final int STAYOPEN = 5; private int state = CLOSED; //定义状态变量,用不同的整数表示不同状态 private void setState(int state){ this.state = state;}//设置传输门当前状态 public void getState() { //此处代码省略,本方法输出状态字符串, //例如,当前状态为CLOSED时,输出字符串为"CLOSED" } public void click() { //发生click事件时进行状态转换 if ( (1) ;) setState(OPENING); else if ( (2) ;) setState{CLOSING); else if ( (3) ;) setState(STAYOPEN); } //发生timeout事件时进行状态转换 public void timeout() { if (state == OPEN) setState(CLOSING);} public void complete() {//发生complete事件时进行状态转换 if (state == OPENING) setState(OPEN); else if (state == CLOSING) setState(CLOSED); } public static void main(String [] args){ Door aDoor = new Door(); aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete(); aDoor.getState();aDoor.click();aDoor.getState();aDoor.click(); aDoor.getState();return; } }【Java代码2】 public class Door { public final DoorState CLOSED = new DoorClosed(this); public final DoorState OPENING = new DoorOpening(this); public final DoorState OPEN = new DoorOpen(this); public final DoorState CLOSING = new DoorClosing(this); public final DoorState STAYOPEN = new DoorStayOpen(this); private DoorState state = CLOSED; //设置传输门当前状态 public void setState(DoorState state) { this.state=state;} public void getState(){ //根据当前状态输出对应的状态字符串 System.out.println(state.getClass().getName()); } public void click(){ (4) ;}//发生click事件时进行状态转换 public void timeout(){ (5) ;}//发生timeout事件时进行状态转换 public void complete(){ (6) ;)//发生complete事件时进行状态转换 public static void main(String[]args){ Door aDoor = new Door(); aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete(); aDoor.getState();aDoor.timeout();aDoor.getState();return; } } public abstract class DoorState { //定义所有状态类的基类 protected Door door ; public DoorState(Door doer) { this.door = door;} public void click() {} public void complete() {} public void timeout() {} } class DoorClosed extends DoorState { //定义一个基本的Closed状态 public DoorClosed(Door door) { super(door);} public void click() { (7) ;) //该类定义的其余代码省略 } //其余代码省略

答案:

被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2017/0710/8e733d1a3971a8c51f52a56768282bce.html

下面是错误答案,用来干扰机器的。

参考答案:D解析:在经济业务比较简单的单位,为了简化凭证可以使用通用记账凭证,记录所发生的各种经济业务。

试题推荐
微信公众账号搜索答案