阅读下列说明和C++代码,回答问题,将答案填入相应横线处。【说明】某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新现在采用观察者(observer)模式来开发该系统,观察者模式的类图如下图所示。?【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 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;}
阅读下列说明和C++代码,回答问题,将答案填入相应横线处。【说明】某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新现在采用观察者(observer)模式来开发该系统,观察者模式的类图如下图所示。
?【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 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;}
?【C++代码】#include
参考解析
解析: 1、Subject[解析] 当主题中的环境发生变化,也就是调用measure-mentsChanged(),会通知观察者,即调用notifyObservers(),在notifyObservers()方法中,观查者会调用自身的up-date(float temperature,float humidity,float cleanness)。在主题的registerObserver(Observe*o)中会注册对主题感兴趣的观察者。
2、(*it)->update(temperature,humidity,clean-ness)
3、notifyObservers() 4、measurementsChanged()
5、Observer() 6、this->envData->registerObserver(this)
2、(*it)->update(temperature,humidity,clean-ness)
3、notifyObservers() 4、measurementsChanged()
5、Observer() 6、this->envData->registerObserver(this)
相关考题:
阅读以下说明和Java代码,将应填入(n)处。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码采用Java语言实现,能够正确编译通过。[Java代码]//Subject.java 文件public interface Subject {public void attach(Observer DocExplorer);public void detach(Observer DocExplorer);void notifyObservers();}//Observer.java 文件public interface Observer{void update((1) );}//OfficeDoc.java 文件import java.util.*;public class OfficeDoc implements Subject(//OfficeDoc 类实现 Subject 接口private Vector bserverVeetor=new java.util.Vector();//存储与OfficeDoc相关联的DocExplorer 对象public void attach(Observer observer){//将某 DocExplorer 对象与OfficeDoc 相关联ObserverVector.addElement(observer);}public void detach(Observer observer){//解除某DocExplorer 对象与OfficeDoc的关联关系ObserverVector.removeElement(observer);}public void notifyObservers(){//当OfficeDoc对象状态已发生变化时,通知所有的DocExplorer对象Enumeration enumeration=(2);while (enumeration.hasMoreElements()){((Observer)enumeration.nextElement()).(3);}}public Enumeration Observers(){return ObserverVector.elements();}//其他公文类的属性和方法省略}//DoeExplorer.java 文件public class DocExplorer implements (4) {public void update( (5) ){//更新DocExplorer自身的状态,代码省略}}
阅读以下技术说明及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件中内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用C++语言实现,能够正确编译通过。[C++代码]
阅读以下技术说明及Java代码,将Java程序中(1)~(5)空缺处的语句填写完整。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用Java语言实现,能够正确编译通过。[Java代码]
阅读以下说明,回答问题1至问题4,将解答填入对应栏内。【说明】某电子商务网站采用ASP+SQL Server开发的电子商务网站系统,提供商品查询、网上购物车、订单管理、后台商品管理、支付等功能。其后台修改商品页面如下图所示。网站开发完成后,开发人员将源代码和数据库文件pubs.mdf及pubs_log.ldf提供给公司网络管理人员进行网站发布。此时应采用(1)数据库方式在数据库服务器上生成数据库。
阅读下列说明和c++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图5—6所示。采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。【c++代码】class Matrix{//各种格式的文件最终都被转化为像素矩阵//st处代码省略};class ImageImp{public:virtual void doPaint(Matrix m)=0; //显示像素矩阵m};class WinImp:public ImageImp{public:void doPaint(Matrix m){/*调用windows系统的绘制函数绘制像素矩阵*/));class LinuxImp:public ImageImp{public:void doPaint(Matrix m){/*调用Linux系统的绘制函数绘制像素矩阵*/)};class Image{public;void setImp(ImageImp*imp){ (1) =imp;)virtual void parseFile(string fileName)=0 ;protected:(2) *imp;};classBMP:public Image{public:void parseFile(string fileName){//此处解析BMP文件并获得一个像素矩阵对象m(3) ;//显示像素矩阵m};classGIF:public Image{//此处代码省略};classJPEG:public Image(//gh处代码省略};void main(){//在windows操作系统上查看demo.bmp图像文件Image*imagel= (4) ;ImageImp*imageImpl= (5) ;(6) ;imagel-parseFile(“demo.bmp”);}现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix,若采用桥接设计模式则至少需要设计 (7) 个类。
阅读以下说明和数据流图,回答问题1~问题3,将解答写在对应栏内。[说明]实验室信息管理系统完成对实验室的开放课题的管理工作。实验室信息管理系统主要完成课题申请、评审、课题结题以及课题信息查询工作。申请人申请课题时,访问实验室主页提交课题申请,经过专业审核后,将申请结果反馈给申请人,同时系统将记录课题申请书及其相关信息,以供查询。“年度汇总”将对当年课题申请信息进行汇总。申请人完成课题后需要登录实验室主页申请结题。收到结题申请后,经过专家评审后,结题结果将通过E-mail反馈给申请人,同时系统将结题结果作为实验室课题信息记录成文件,以供查询,如果评审通过,该课题作为科研成果,系统并记录以供查询。对于实验室信息的查询需要进行身份验证。验证通过后,可以查询到“历年课题申请书”、“实验室课题一览表”、“开放课题成果汇总表”、“历年结题申请书”等信息。对于实验课题可以获得课题编号和名称、课题的经费额、课题起始日期和结题日期,课题申请人姓名、工作单位、电话以及email地址等信息。数据流图8-5缺少了一条数据流,请给出此数据流的起点和终点,并采用说明中的词汇给出此数据流名。
阅读下列说明,回答问题1至问题3,将解答填入对应栏内。【说明】某企业业务信息系统某天突然出现故障,无法处理业务。信息系统维护人员采用重新启动的方法来进行恢复,发现数据库系统无法正常启动。数据库故障主要分为事务故障、系统故障和介质故障,不同故障的恢复方法也不同。请解释这3种数据库故障的恢复方法,回答该企业的数据库故障属于何种类型的故障,为什么?
设计模式允许一个对象在其状态改变时,通知依赖它的所有对象。该设计模式的类图如下图,其中, (68)在其状态发生改变时,向它的各个观察者发出通知。A.命令( Command)B.责任链(Chain of Responsibility)C.观察者( Observer)D.迭代器(Iterator)
阅读下列说明和C++代码,将应填入 (n)处的字句写在答题纸的对应栏内. 【说明】 某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。 现在采用观察者(Observer)模式来开发该系统。观察者模式的类图如图5-1所示。【C++代码】 include iostream include vector 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: vectorObserver* observers; float temperature, humidity, cleanness; public: void registerObserver(Observer* o) { observers.push_back(o); } void removeObserver(Observer* o) { /* 代码省略 */ } void notifyObservers() { for(vectorObserver*::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; }
阅读下列说明和Java代码,将应填入 (n)处的字句卸载答题纸的对应栏内. 【说明】 某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。 现在采用观察者(Observer)模式来开发该系统。观察者模式的类图如图6-1所示。【Java代码】 import java.util.*; interface Observer { public void update(float temp, float humidity, float cleanness); } interface Subject { public void registerObserver(Observer o); //注册对主题感兴趣的观察者 public void removeObserver(Observer o); //删除观察者 public void notifyObservers(); //当主题发生变化时通知观察者 } class EnvironmentData implements (1) { private ArrayList observers; private float temperature, humidity, cleanness; public EnvironmentData() { observers = new ArrayList(); } public void registerObserver(Observer o) { observers.add(o); } public void removeObserver(Observer o) { /* 代码省略 */ } public void notifyObservers() { for (int i = 0; i observers.size(); i++) { Observer observer = (Observer)observers.get(i); (2) ; } } public void measurementsChanged() { (3) ; } public void setMeasurements(float temperature, float humidity, float cleanness) { this.temperature = temperature; this.humidity = humidity; this.cleanness = cleanness; (4) ; } } class CurrentConditionsDisplay implements (5) { private float temperature; private float humidity; private float cleanness; private Subject envData; public CurrentConditionsDisplay(Subject envData) { this.envData = envData; (6) ; } public void update(float temperature, float humidity, float cleanness) { this.temperature = temperature; this.humidity = humidity; this.cleanness = cleanness; display(); } public void display() {/* 代码省略 */ } } class EnvironmentMonitor{ public static void main(String[] args) { EnvironmentData envData = new EnvironmentData(); CurrentConditionsDisplay currentDisplay = new CnrrentConditionsDisplay(envData); envData.setMeasurements(80, 65, 30.4f); } }
阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图5-1所示。【c++代码】}
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。command模式的类图如图6-1所示。【Java代码】}
试题四(共25分)阅读以下关于数据库架构设计的叙述,回答问题1至问题3。某软件公司欲开发一个社交网络系统,该系统能够接收多个不同种类客户端发送的信息,并将这些信息实时显示在每个客户端的页面上供客户阅读。该系统将为数以百万计的用户服务,因此,要求采用的数据库能够支持大量信息存储,能够满足并发读写要求,并要求随着数据规模的扩大,数据库系统要易于进行扩充。关于数据库架构的设计,王工和张工提出了两种模式:王工提出基于传统的关系型数据库模式,通过向上扩展( Scale-up)以满足数据库的可扩展性要求;李工提出利用新兴的NoSQL数据库模式,通过向外扩展( Scale-out)以满足数据库的可扩展性要求。项目组经过讨论,决定采用李工提出的设计方案。【问题1】(11分)请指出关系数据库模式和NoSQL模式在并发支持、存储与查询、扩展方式、索引方式和应用领域五个方面各自的特点,结果填入表4-1中(1)~(10);并针对应用需求,说明项目组选择李工提出的设计方案的原因。【问题2】(8分)与传统的关系型数据库相比,NoSQL数据库所支持的典型数据存储类型有哪些?【问题3】(6分)在实际应用中,NoSQL数据库存在的问题有哪些?
阅读下列说明,回答与数据库相关的下列问题,将解答填入答题纸的对应栏内。数据模型是数据库系统的核心和基础,它通常由哪三部分组成?Oracle、DB2、Sybase等是基于哪种数据模型的数据管理系统?
阅读下列说明和 C ++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图 6-1 所示。【C++ 代码】#includeusing namespace std;class BrakeBehavior{public:(1) ; /*其余代码省略*/};class LongWheelBrake : public BrakeBehavior{public:void stop(){cout
阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】 #include using namespace std; class invoice{ public: (1){ cout
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某网站采用ASP+SQL Server开发,系统的数据库名为gldb,数据库服务器IP地址为202.12.34.1。打开该网站主页,如图5-1所示:【问题1】(8分,每空1分)以下是该网站主页部分的html代码,请根据图5-1将(1)~(8)的空缺代码补齐。 【问题2】(2分,每空1分)该网站采用ASP编写程序代码,在ASP内置对象中,application对象和session对象可以创建存储空间用来存放变量和对象的引用。如果在页面中设置访客计数器,应采用上述的 (9) 对象:如果编写购物车组件,应采用上述的 (10) 对象。【问题3】(5分,每空1分)以下是该网站进行数据库连接的代码conn.asp,请根据题目说明完成该程序,将答案填写在答题纸的对应位置。
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某论坛采用ASP+Access开发,该网站域名为www.bbstd.cn,其主页如图4-1所示:【问题1】 (8分)以下是该网站主页部分的html代码,请根据图4-1将(1)~(8)的空缺代码补齐。(1)~(8)的备选答案:A.submit B.reset C.text D.E. F.action G.设为首页 H.添加收藏【问题2】 (3分)该网站数据库采用Access,其数据库名为data.mdb,表为post。Post表设计如表4-1所示。1.请根据网站要求,在表4-1中给出合适的数据类型。(9)~(10)的备选答案:A.文本 B.数字 C.自动编号 D.日期/时间2.根据数据库可以判断,该表中(11)字段适合作主键。【问题3】(4分)以下是该网站部分数据库代码,请根据题目说明完成该程序,将答案填写在答题纸的对应位置。
阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】某系统在线讨论区采用ASP+Access开发,其主页如图4-1所示【问题2】(7分)该网站在主页上设置了分页显示,每页显示10条留言,以下是该网站页面分页显示部分代码,请阅读程序代码,并将(9)~(15)的空缺代码补齐。maxpage Then page= (14)End Ifrs.AbsolutePage = PageIf page = maxpage Then x = iCount - (maxpage -1) * iPageSizeElse x= (15)End If%>......(9)~(15)的备选答案:A.Clnt(page) B.exec C.maxpage D.10 E.EOF F.iPageSize G. order
阅读下列说明和C++代码,回答问题,将解答填入答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic)、银卡(Silver)和金卡 (Gold) 三个等级。非会员 (NonMember) 可以申请成为普卡会员。会员的等级根据其一年内累积 的里程数进行调整。描述会员等级调整的状态图如图 5-1 所示。现采用状态 (State) 模式实现上述场景,得到如图 5-2 所示的类图。【问题1】(15分)阅读上述说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
阅读下列说明和 Java 代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上 留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy) 设 计模式来实现该需求,所设计的类图如图 5-1 所示。
阅读下列说明和C++代码,回答问题,将解答填入答题纸的对应栏内。【说明】某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如下图所示。Command?模式类图
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 某文件管理系统中定义了类OfficeDoc和DocExplorer,当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态,现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。
欲使一个后端数据模型能够被多个前端用户界面连接,采用( )模式最适合A.装饰器(Decorator)B.享元(Flyweight) C.观察者(Observer)D.中介者(Mediator)
阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。
质量控制实验室宜采用便于()的方法保存检验数据、环境监测数据、制药用水的微生物监测数据等。A、数据分析B、电子查询C、趋势分析D、统计分析