軟件設(shè)計(jì)師案例分析當(dāng)天每日一練試題地址:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4
往期軟件設(shè)計(jì)師每日一練試題匯總:m.xiexiliangjiufa.com/class/27/e4_1.html
軟件設(shè)計(jì)師案例分析每日一練試題(2021/11/16)在線測試:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4&day=2021/11/16
點(diǎn)擊查看:更多軟件設(shè)計(jì)師習(xí)題與指導(dǎo)
軟件設(shè)計(jì)師案例分析每日一練試題內(nèi)容(2021/11/16)
閱讀下列說明和C++代碼,將應(yīng)填入 (n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi).
【說明】
某實(shí)驗(yàn)室欲建立一個(gè)實(shí)驗(yàn)室環(huán)境監(jiān)測系統(tǒng),能夠顯示實(shí)驗(yàn)室的溫度、濕度以及潔凈度等環(huán)境數(shù)據(jù)。當(dāng)獲取到最新的環(huán)境測量數(shù)據(jù)時(shí),顯示的環(huán)境數(shù)據(jù)能夠更新。
現(xiàn)在采用觀察者(Observer)模式來開發(fā)該系統(tǒng)。觀察者模式的類圖如圖5-1所示。
【C++代碼】
#include
#include
using namespace std;
class Observer {
public:
virtual void update(float temp, float humidity, float cleanness)=0;
};
class Subject {
public:
virtual void registerObserver(Observer* o) = 0; //注冊對(duì)主題感興趣的觀察者
virtual void removeObserver(Observer* o) = 0; //刪除觀察者
virtual void notifyObservers() = 0;//當(dāng)主題發(fā)生變化時(shí)通知觀察者
};
class EnvironmentData : public (1) {
private:
vector
observers;
float temperature, humidity, cleanness;
public:
void registerObserver(Observer* o) { observers.push_back(o); }
void removeObserver(Observer* o) { /* 代碼省略 */ }
void notifyObservers() {
for(vector::const_iterator it = observers.begin(); it != observers.end(); it++)
{ (2) ; }
}
Void measurementsChanged() { (3) ; }
void setMeasurements(float temperature, float humidity, float cleanness) {
this->temperature = temperature;
this->humidity = humidity;
this->cleanness = cleanness;
(4) ;
}
};
class CurrentConditionsDisplay : public (5) {
private:
float temperature, humidity, cleanness;
Subject* envData;
public:
CurrentConditionsDisplay(Subject* envData) {
this->envData = envData;
(6) ;
}
void update(float temperature, float humidity, float cleanness) {this->temperature = temperature;
this->humidity = humidity;
this->cleanness = cleanness;
display();
}
void display() { /* 代碼省略 */ }
};
int main() {
EnvironmentData* envData = new EnvironmentData();
CurrentConditionsDisplay* currentDisplay = new CurrentConditionsDisplay(envData);
envData->setMeasurements(80, 65, 30.4f);
return 0;
}
信管網(wǎng)試題答案與解析:m.xiexiliangjiufa.com/st/3814319684.html
信管網(wǎng)考友試題答案分享:
信管網(wǎng)wangly:
1) subject
2) observers.get(it).update(temperature, humidity, cleanness)
3) this.notifyobservers()
4) this.measurementschanged()
5) observer
6) this.envdata.registerobserver(this)
7)
信管網(wǎng)試題答案與解析:
m.xiexiliangjiufa.com/st/3814319684.html
溫馨提示:因考試政策、內(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í)效果事半功倍。