天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

2006年11月軟件設計師下午試題[6]

軟件設計師 責任編輯:AHJK880 2008-08-06

添加老師微信

備考咨詢

加我微信

摘要:試題六(共15分)閱讀以下說明和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內。[說明]傳輸門是傳輸系統中的重要裝置。傳輸門具有Open(打開)、Closed(關閉)、Opening(正在打開)、Stay0pen(保持打開)、Closing(正在關閉)五種狀態。觸發傳輸門狀態轉換的事件有click,complete和timeout三種。事件與其相應的狀態轉換如圖6-1所示。


試題六(共15分)
閱讀以下說明和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;
}

[答案討論]

[1]  [2]  [3]  [4]  [5]  [6]  [7]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!