软件设计师下午试题每日一练(11)

软件设计师 责任编辑:胡媛 2018-10-10

添加老师微信

备考咨询

加我微信

摘要:希赛网软考频道小编今天为大家准备了软件设计师下午试题每日一练(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

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取