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

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


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

[C++代码1]
 const int CLOSED = 1; const int OPENING = 2;
 const int OPEN = 3; const int CLOSING = 4;
 const int STAYOPEN = 5;//定义状态变量,用不同整数表示不同状态
 class Door{
private:
 int state;//传输门当前状态
 void setState(int state){this->state = state;}//设置当前状态
 public:
 Door():state (CLOSED){}:
 void getState(){//根据当前状态输出相应的字符串
switch(state){
case OPENING: cout<<""OPENING""<<endl;break;
case CLOSED: cout<<("CLOSED"<<endl;break;
case OPEN: cout<<"OPEN"<<endl;break;
case CLOSING: cout<<"CLOSING"<<endl;break;
case STAYOPEN: cout<<"STAYOPEN"<<endl;break;
}
}
void click(){//发生click事件时进行状态转换
if( (1) ) setState(OPENING);
else if( (2) )setState(CLOSING);
else if( (3) )setState(STAYOPEN);
}
void timeout(){//发生timeout事件时进行状态转换
if(state == OPEN)setState(CLOSING);
}
void complete(){//发生complete事件时进行状态转换
if(state == OPENING)setState(OPEN):
else if(state == CLOSING)setState(CLOSED);
}
};
int main(){
Door aDoor;
aDoor. getState(); aDoor. c1ick(); aDQor.getState(); aDoor. Complete();
aDoor.getState(); aDoor. click(); aDoor.getState();aDoor. cIick();
aDoor. getState(); return 0;
}

 [C++代码2]
class Door{
public:
DoorState *CLOSED, *OPENING,*OPEN, *CLOSING, *STAYOPEN, *state:
Door():
virtual ~Door(){……//释放申请的内存,此处代码省略};
void setState(DoorState *state){this->state = state;}
void getState(){
//此处代码省略,本方法输出状态字符串,
//例如,当前状态为CLOSED时,输出字符串为"CLOSED"
};
void click();
void timeout();
void complete();
};
Door::Door(){
CLOSED = new DoorClosed(this); OPENING = new DoorOpening(this);
OPEN = new DoorOpen(this); CLOSING = new DoorClosing(this);
STAYOPEN = new DoorStayOpen(this);state = CLOSED:
}
void Door::click(){ (4) ;}
void Door::timeout(){ (5) ;}
void Door::complete(){ (6) ;}

class DoorState//定义一个抽象的状态,它是所有状态类的基类
{
protected:Door *door;
public:
DoorState(Door *door){this->door = door;}
virtual ~DoorState(void);
virtual void click(){}
virtual void complete(){}
virtual void timeout(){}
};
class DoorClosed : Public DoorState{//定义一个基本的Closed状态
public:
DoorClosed(Door *door): DoorState(door){}
Virtual ~DoorClosed(){}
void click();
};
void DoorClosed::click(){ (7) ;}
//其它状态类的定义与实现代码省略

int main(){
Door aDoor;
aDoor.getState();aDoor.click(); aDoor.getState();aDoor.complete();
aDoor.getState();aDoor.timeout();aDoor.getState();return 0;
}


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

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

更多资讯可关注希赛网软考频道,问题咨询请拨打客服电话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次