軟件設(shè)計師案例分析當(dāng)天每日一練試題地址:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4
往期軟件設(shè)計師每日一練試題匯總:m.xiexiliangjiufa.com/class/27/e4_1.html
軟件設(shè)計師案例分析每日一練試題(2022/12/30)在線測試:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4&day=2022/12/30
點擊查看:更多軟件設(shè)計師習(xí)題與指導(dǎo)
軟件設(shè)計師案例分析每日一練試題內(nèi)容(2022/12/30)
試題六
閱讀下列說明和C++代碼,將應(yīng)填入 (n) 處的字句寫在對應(yīng)欄內(nèi)。
【說明】
已知某企業(yè)欲開發(fā)一家用電器遙控系統(tǒng),即用戶使用一個遙控器即可控制某些家用電器的開與關(guān)。遙控器如左下所示。該遙控器共有4個按鈕,編號分別是0至3,按鈕0和2能夠遙控打開電器1和電器2,按鈕1和3則能遙控關(guān)閉電器1和電器2。由于遙控系統(tǒng)需要支持形式多樣的電器,因此,該系統(tǒng)的設(shè)計要求具有較高的擴(kuò)展性?,F(xiàn)假設(shè)需要控制客廳電視和臥室電燈,對該遙控系統(tǒng)進(jìn)行設(shè)計所得類圖如右下所示。
右上圖中,類RomoteController的方法onPressButton(int button)表示當(dāng)遙控器按鍵按下時調(diào)用的方法,參數(shù)為按鍵的編號;Command接口中on和off方法分別用于控制電器的開與關(guān);Light中turnLight(int degree)方法用于調(diào)整電燈燈光的強(qiáng)弱,參數(shù) degree值為0時表示關(guān)燈,值為100時表示開燈并且將燈光亮度調(diào)整到最大;TV中 setChannel(int channel)方法表示設(shè)置電視播放的頻道,參數(shù)channel值為0時表示關(guān)閉電視,為1時表示開機(jī)并將頻道切換為第1頻道。
【C++代碼】
class Light{ //電燈類
public:
void trunLight(int degree){//調(diào)整燈光亮度,0表示關(guān)燈,100表示亮度最大);
};
class TV{//電視機(jī)類
public:
vold setChannel(int channel]{//調(diào)整電視頻道,0表示關(guān)機(jī),1表示開機(jī)并切換到1頻道};
};
class Command{//抽象命令類
public:
virtual void on()=0;
virtual void off()=0;
};
class RemoteController{ //遙控器類
protected:
Command* commands [4];//遙控器有4個按鈕,按照編號分別對應(yīng)4個Command對象
public:
void onPressButton(int button){ //按鈕被按下時執(zhí)行命令對象中的命令
if(button % 2==0)commands[button]->on();
else commands[button]->off();
}
void setCommand(int button,Command* command){
(1) =command;//設(shè)置每個按鈕對應(yīng)的命令對象
}
};
class LightCommand:public Command{ //電燈命令類
protected: Light* light; //指向要控制的電燈對象
public:
void On(){light->trunLight(100););
void off()[light-> (2) ;);
LightCommand(Light * light){this->light=light;);
};
class TVCommand:public Command{//電視機(jī)命令類
protected: TV*tv; //指向要控制的電視機(jī)對象
public:
void on(){tv-> (3) ;};
void off(){tv->setChannel(0););
TVCommand(TV *tv){this->tv=tv;);
};
void main(){
Light light; TV tv;//創(chuàng)建電燈和電視對象
LightCommand lightCommand (&light);
TVCommand tVCommand(&tv);
RemoteController remoteController;
remoteController. setCommand(0, (4) ); //設(shè)置按鈕0的命令對象
…//此處省略設(shè)置按鈕1、按鈕2和按鈕3的命令對象代碼
}
本題中,應(yīng)用命令模式能夠有效讓類 (5) 和類 (6) 、類 (7) 之間的耦合性降至最小。
信管網(wǎng)考友試題答案分享:
信管網(wǎng)cnitpm577448553863:
<br /><img src="http://pic.cnitpm.com/upload/2022/11/tbimg/11-04/1667516192.jpg" />
信管網(wǎng)訂閱號
信管網(wǎng)視頻號
信管網(wǎng)抖音號
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權(quán)威部門公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評論 查看完整評論 | |