试题一:阅读下列说明和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 : public (1) {
private:
vector
float temperature, humidity, cleanness;
public:
void registerobserver(observer* o) { observers.push_back(o); }
void removeobserver(observer* o) { /* 代码省略 */ }
void notifyobservers() {
for(vector
{ (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;
}
查看答案
参考答案:
参考解析:www.cnitpm.com/st/3814319684.html
信管网考友试题答案分享:
信管网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)
试题二:阅读下列说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以sql server和access两种数据库以及系统中的数据库表department为例,其类图如图6-1所示。
图6-1 类图
【java代码】
import java.util.*;
class department{/*代码省略*/}
interface idepartment{
(1) ;
(2) ;
}
class sqlserverdepartment (3) {
public voidinsert(department department){
system.out.println(”insert a record into department in sql server!");
∥其余代码省略
}
public department getdepartment(int id){
/*代码省略*/
}
}
classaccessdepartment(4) {
public void insert(department department){
system.out.println("insert a record into department in access!”);
∥其余代码省略
}
public department getdepartment(int id){
/*代码省略*/
}
}
(5) {
(6) ;
}
class sqlserverfactory implements ifactory{
public idepartment createdepartment(){
retum new sqlserverdepartment();
}
∥其余代码省略
}
class accessfactory implements ifactory{
public idepartment createdepartment(){
return new accessdepartment();
}
∥其余代码省略
}
查看答案
温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!
信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。
信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。
发表评论 查看完整评论 | |