首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
admin
2008-01-15
102
问题
阅读以下说明和C++代码,将应填入(n)处。
[说明]
在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorcr对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个C++源文件中,能够正确编译通过。
[C++代码]
#include <iostream>
const OBS_MAXNUM=20;//最多与OfficeDoc对象相关联的DocExplorer对象的个数
(1);
class DocExplorer{ //关注OfficeDoc公文对象的类
public:
DocExplorer( (2) *doc); //构造函数
(3) void update(OfficeDoc *doc)=0;//更新自身状态的函数
//其他相关属性和方法省略
};
class OfficeDoc{ //公文类
private:
DocExplorer *myObs[OBS_MAXNUM];
//关注此公文类的DocExplorer类对象指针数组
int index; //与OfficeDoc对象关联的DocExplorer对象的个数
public:
OfficeDoe()
index=0;
}
void attach(DocExplorer *o){
//将一DoeExplorer对象与OfficeDoe对象相关联
if(index >=OBS_MAXNUM ||o=NULL)return;
for(int loop=0; loop<index; loop++)
if(myObs[loop]==o) return;
myObs[index]=o;
index++;
}
void detaeh(DocExplorer *o){
//接触某DoeExplorer对象与OfficeDoc对象的关联
if(0==NULL) return;
for(int loop=0; loop<index; loop++){
if(myObs[loop]==o){
if(loop<=index-2)myObs[loop]=myObs[index-1];
myObs[index-1]=NULL;
index--;
break;
}
}
}
private:
void notifyObs(){ //通知所有的DocExplorer对象更改自身状态
for(int loop=0; loop<index; loop++){
myObs[loop]->(4); //DocExplorer对象更新自身状态
}
}
//其他公文类的相关属性和方法
};
DocExplorer::DocExplorer(OfficeDoc *doc){//DocExplorer 类对象的构造函数
doc->(5); //将此DocExplorer对象与doc对象相关联
}
选项
答案
(1) class OfficeDoc (2) OfficeDoc (3) virtual (4) update(this) (5) attach(this)
解析
首先,DocExplorer需要知道OfficeDoc是一个类,但因为OfficeDoc定义在 DocExplorer之后,所以需要在DocExplorer类的定义前加上class OfficeDoc的声明,因此(1)空处应该填写class OfficeDoc
第(2)空可根据程序最后的构造函数的实现知道,应该填写OfficeDoc;在观察者模式中,不同的观察者更新自身的方法不同,因此第(3)空处应该填写virtual,而且程序最后的=0也表明是一个纯虚拟函数;
第(4)空处,程序注释说明所有与OfficeDoc相关联的对象更新自身状态因此需要使用update函数,但update函数的参数是一个OfficeDoc类的对象。所以,参数应该为this;
第(5)空将OfficeDoc类的对象和DocExplorer类的对象相关联,关联的函数是 OfficeDoc中的attach方法,其参数是一个DocExplorer对象,使用this能够表示当前的对象,所以应该填写attach(this)。
转载请注明原文地址:https://kaotiyun.com/show/1fDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足(44)级别的;针对布尔表达式A&&(B‖C)执行逻辑覆盖测试,测试用例至少需要(45)种组合才能满足多条件覆盖的要
相对于DES算法而言,RSA算法的(7),因此,RSA(8)。
风险分析在软件项目开发中具有重要作用,包括风险识别、风险预测、风险评估和风险控制等。“建立风险条目检查表”是(18)时的活动,“描述风险的结果”是(19)时的活动。
针对下列程序段,需要(52)个测试用例才可以满足语句覆盖的要求。 switch(value){ case 0: other=30; break; case 1:
为验证某呼叫中心是否能够承受大量呼叫信息同时呼入并得到正确处理,测试工程师一般采用______测试工具。A.负载压力B.代码C.网络仿真D.故障诊断
以下关于白盒测试和黑盒测试的理解,正确是______。A.白盒测试通过对程序内部结构的分析、检测来寻找问题B.白盒测试通过一些表征性的现象、事件、标志来判断内部的运行状态C.单元测试可应用白盒测试方法,集成测试则采用黑盒测试方法D.在软件生命周期各
为了使软件测试更加高效,应遵循的原则包括______。①所有的软件测试都应追溯到用户需求,充分注意缺陷群集现象②尽早地和不断地进行软件测试、回归测试③为了证明程序的正确性,尽可能多地开发测试用例④应由不同的测试人员对测试所发
若有关系R(A,B,C,D)和S(C,D,E),则与表达式π3,4,7(σ4<5(R×S))等价的SQL语句如下:SELECT(17)FROM(18)WHERE(19);(18)
针对以下C语言程序段,假设sta[10]=-1,对于x的取值,需要______个测试用例能够满足分支覆盖的要求。intMathMine(intx){intm=0;inti;for(i=x-1;i<=x+1;
将图2-1中(1)和(2)空缺名称填写在应的位置。在本质上,ADSL采用的什么多路复用方式?
随机试题
企业再造的特点。
关于不同文化对色彩的偏好和禁忌,下列说法不正确的是()
某地10名20岁女子身高均数为157.3cm,标准差为4.9cm;体重均数为53.7kg,标准差为4.9kg。若要比较身高与体重的变异度应采用
下列各项中,可以作为提高净资产收益率的因素有()。
某投资者用10000元进行为期一年的投资,假定市场年利率为6%,利息按半年复利计算,该投资者投资的期末价值为()元。
与编制零基预算相比,编制增量预算的主要缺点主要包括()。
公安机关及其人民警察要坚持以人为本,切实把( )放在公安工作的首位,做到“权为民所用,情为民所系,利为民所谋”。
虚拟页式存储管理中页表有若干项,当内存中某一页面被淘汰时,可根据其中哪一项决定是否将该页写回外存?
设表的长度为20。则在最坏情况下,冒泡排序的比较次数为
Englishservesasafunctionalalternativelanguageinseveralareasofpublicactivityforthemanynationsoftheworldwhich
最新回复
(
0
)