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