阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新现在采用观察者(observ

admin2015-12-01  28

问题 阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新现在采用观察者(observer)模式来开发该系统,观察者模式的类图如图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;//注册对主题感兴趣的观察者
Virtual void removeObserver(Observer*o)=0;//删除观察者
Virtual void notifyObservers()=0;//当主题发生变化时通知观察者
}
Class EnvironmentData:publ ic  (1)  {
Private:
Vectorobservers:
Float temperature,humidity,cleanness;
Public:
Void registerobserVer(0bserVer*  o){observers.push—back(o);  )
Void removeObserver(Observer*O)</*代码省略*/}
Vo id not ifyObservers(){
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:publ ic    (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 EnvironmentData0:
    CurrentConditionsDisplay*currentDisplay=new CurrentConditionsDisplay(envData):
    envData->setMeasurements(80,65,30.4f);
    return 0;
    }

选项

答案(1)Subject (2)(*it)一>update(temperature,humidity,cleanness) (3)notifyObservers() (4)measurementsChanged() (5)Observer() (6)this一>envData-->registerObserver(this)

解析  当主题中的环境发生变化,也就是调用measurementsChanged(),会通知观察者,即调用notifyObservers(),在notifyObservers()方法中,观查者会调用自身的update(float temperature,float humidity,float cleanness)。在主题的registerobserver(0bserve*o)中会注册对主题感兴趣的观察者。
转载请注明原文地址:https://kaotiyun.com/show/DdDZ777K
0

相关试题推荐
最新回复(0)