首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
admin
2008-01-15
66
问题
阅读以下说明和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
软件设计师下午应用技术考试
软考中级
相关试题推荐
v模型指出,(47)对程序设计进行验证,(48)对系统设计进行验证,(49)应当追溯到用户需求说明。
某评测机构A承接了公司B开发的ERP软件的测试工作,负责该项目的软件评测师甲,为了提高自己在ERP方面的知识,向A机构的负责人提出要到开发ERP软件的公司D做兼职开发工作的请求。当测试工作正在进行时,B公司为了申报某科技奖项,希望A机构能先出具一个证明其软
在一个单CPU的计算机系统中,有两台外部设备R1、R2和三个进程P1、P2、P3。系统采用可剥夺式优先级的进程调度方案,且所有进程可以并行使用I/O设备,三个进程的优先级、使用设备的先后顺序和占用设备时间如下表所示:假设操作系统的开销忽略不计,三个进程
数据存储在磁盘上的排列方式会影响I/O服务的总时间。假设每磁道划分成10个物理块,每块存放1个逻辑记录。逻辑记录R1,R2,…,R10存放在同一个磁道上,记录的安排顺序如下表所示:假定磁盘的旋转速度为20ms/周,磁头当前处在R1的开始处。若系统顺序处
人眼看到的任一彩色光都是亮度、色调和饱和度3个特性的综合效果,其中(13)反映颜色的种类。
两个同符号的数相加或异符号的数相减,所得结果的符号位SF和进位标志CF进行(1)运算为1时,表示运算的结果产生溢出。
以下控制流程图的环路复杂性V(G)等于(54)。
以下类图中,类Classl和Class2之间是()关系。
在分布式数据库中有分片透明、复制透明、位置透明和逻辑透明等基本概念,其中:___________(19)是指局部数据模型透明,即用户或应用程序无须知道局部使用的是哪种数据模型;___________(20)是指用户或应用程序不需要知道逻辑上访问的表具体是怎
对某商店业务处理系统采用数据流图(DFD)进行功能建模,其中“检查订货单”是其中的一个①。由于在进行订货单检查时,需要根据客户的欠款情况、订单金额等多个条件判断是否采取发出催款单、准备货物、发出发货单等行为,此时适合采用②进行描述。①处
随机试题
Inanew【C1】________publishedinthejournalHeart,researchersfoundthatSwissadultswhotookoneortwodaytimenapsperwee
患者,男性,25岁。因高处坠落后致多发伤收住ICU,入院诊断有原发性腹腔间室综合征。引起原发性腹腔间室综合征最常见的原因是
A.多为上腹正中或偏右节律型疼痛B.多为剑突下正中或偏左节律型疼痛C.上腹疼痛多在餐后发生,呕吐多见D.上腹持续性较剧烈疼痛,放射至背部E.右上腹节律性疼痛,夜间痛和背部痛多见且突出胃溃疡()
关于盗伐林木罪,下列哪一选项是正确的?(2017年卷二20题)
工程建设监理规划应由总监理工程师主持,()参加编制。
基金代销机构在基金销售活动中,不正确的做法有()。
企业下列生产经营业务中可以分期确认收入的有()。
q是()。
以下哪个设计内容不属于数据库应用系统总体设计范畴()。
以下程序的输出结果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){sta
最新回复
(
0
)