万能百科  > 所属分类  > 

请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1和问题2。【说明】

请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1和问题2。

【说明】

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

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

【C++代码1】

const int CLOSED = 1; const int PENING = 2;

const int PEN = 3; const int CLOSING = 4;

const int STAYOPEN = 5; //定义状态变量,用不同整数表示不同状态

class Door {

private:

private:

int state; //传输门当前状态

void setState(int state) { this->state = stale; } //设置当前状态

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.click(); aDoor.getState(); aDoor.complete();

aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.click();

aDoor.getState(); return 0;

}

【C++代码2】

class Door {

public:

DoorState *CLOSED, *OPENING, *OPEN, *CLOSING, *STAYOPEN, *state;

Door();

virtual ~Door() { ... //释放申请的内存,此处代码省略};

void s

正确答案:

(1)state==CLOSED || state==CLOSING(2)state==OPENING || state==STAYOPEN(3)state==OPEN(4)state->click()(5)state->timeout()(6)state->complete()(7)door->setState(door->OPENING)(1)state==CLOSED || state==CLOSING(2)state==OPENING || state==STAYOPEN(3)state==OPE

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签