问题解决研究学习模式一般分问题情境、解定问题、提出假设、()四个步骤展开。
参考答案:找出答案
锛“瓦垄趾甲”时,应顺趾甲的()方向进行。
【说明】 传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout 3种,事件与其相应的状态转换如图6-18所示。
下面的【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: 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 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) ; //其他状态类的定义与实现代码省略 iht main() Door aDoor; aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.complete(); aDoor.getState(); aDoor.timeout(); aDoor.getState(); return 0;