希赛网 >软件水平考试>软件设计师> 软件设计师下午试题每日一练(21)
软件设计师下午试题每日一练(21)
责任编辑:胡同发布日期:2018年11月07日【软考学习交流群】:458701095
摘要: 希赛网软考频道小编今天为大家准备了软件设计师下午试题每日一练(21),更多软件设计师下午试题请考生们关注希赛网软考频道。

阅读以下说明以及Java程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有click、 complete和timeout三种。事件与其相应的状态转换如图7-1所示。



 下面的[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.clik();
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 DoorStay0pen(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 door){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) ;}
//该类定义的其余代码省略
}
//其余代码省略

 

点击注册会员>>>即可获取软件设计师免费在线真题、观看免费公开课!

真题自测:软考各科目历年真题及答案解析

更多资讯可关注希赛网软考频道,问题咨询请拨打客服电话400-111-9811

1 2
希赛软考微信公众号二维码
本文内容由网友发布,仅代表网友个人经验或观点,不代表本网站立场和观点。如果本文侵犯了您的知识产权,请与我们 取得联系,我们会及时修改或删除。
分到到:
相关推荐
最新资讯
最热资讯
热门阅读
  1. 软件设计师考试试题分类精解(2018版)
    • 原 价:¥38.00 希赛币
    • 优惠价:¥38.00 希赛币
    • 阅读次数:31777次
  2. 软件设计师考试考前串讲
    • 原 价:¥19.80 希赛币
    • 优惠价:¥15.84 希赛币
    • 阅读次数:12897次
  3. 软件设计师考试习题集
    • 原 价:¥15.80 希赛币
    • 优惠价:¥15.80 希赛币
    • 阅读次数:9803次
  4. 软件设计师考试下午考点精讲与考前必练
    • 原 价:¥15.80 希赛币
    • 优惠价:¥15.80 希赛币
    • 阅读次数:7474次
  5. 软件设计师考前冲刺与考点分析
    • 原 价:¥19.80 希赛币
    • 优惠价:¥19.80 希赛币
    • 阅读次数:7719次
  6. 软件设计师考试冲刺(习题与解答)
    • 原 价:¥19.80 希赛币
    • 优惠价:¥19.80 希赛币
    • 阅读次数:9577次