首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
admin
2008-01-15
35
问题
阅读以下说明和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://jikaoti.com/ti/qhi7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
某评测机构A承接了公司B开发的ERP软件的测试工作,负责该项目的软件评测师甲,为了提高自己在ERP方面的知识,向A机构的负责人提出要到开发ERP软件的公司D做兼职开发工作的请求。当测试工作正在进行时,B公司为了申报某科技奖项,希望A机构能先出具一个证明其软
软件测试类型按开发阶段划分是:(45)。
由我国信息产业部批准发布,在信息产业部门范围内统一使用的标准,称为(14)。
设关系模式R(A,B,C),传递依赖指的是(16);下列结论错误的是(17)。
通过疲劳强度测试,最容易发现(55)问题。
GB/T18905.5《软件工程产品评价》中,分别规定了开发者用、需方用、评价者用的过程,以下理解正确的是______。A.计划开发新产品的厂商,该标准中规定不允许利用他们自己的技术人员进行产品评价B.软件产品的一般评价过程是:确立评价需求,规定、设
软件测试原则中指出“完全测试是不可能的”,主要原因是______。A.输入量太大、输出结果太多以及路径组合太多B.自动化测试技术不够完善C.测试的时间和人员有限D.仅仅靠黑盒测试不能达到完全测试
某教学管理数据库中,学生、课程关系模式和主键分别为:S(学号,姓名,性别,家庭住址,电话),关系S的主键为学号;C(课程号,课程名,学分),关系C的主键为课程号。假设一个学生可以选择多门课程,一门课程可以由多个学生选择。一旦学生选择某门课程必定有该课程的成
以下关于数据流图的叙述中,不正确的是()。
将图2-1中(1)和(2)空缺名称填写在应的位置。在本质上,ADSL采用的什么多路复用方式?
随机试题
利福霉素是一种抗生素,它强烈抑制革兰阳性菌和结核分枝杆菌等细菌的生长,其机制是抑制细菌的
一名3岁病儿患急性菌痢住进医院,经治疗本已好转,即将出院。其父母觉得小儿虚弱,要求输血。碍于情面,医生同意了。可护士为了快点交班,提议给予静脉推注输血。当时病儿哭闹,医护齐动手给他输血过程中。病儿突发心脏骤停死亡。此案中医护人员的伦理过错是
企业因为异地产品展销,最适宜开办的帐号是()
企业发生的与其施工生产经营活动没有直接关系的各项收入和支出是()。
下列各项中,应通过“应付职工薪酬”科目核算的有()。
某业主选聘一物业管理公司进行写字楼收益性物业管理,预计年潜在毛租金收入为100万元,年经营费用为20万元,年空置和收租损失为5万元,年贷款还本付息额为20万元,若市场上该类物业的资本化率为10%,则该物业价值的估值为()万元。
准确收集社区人群基础资料,营养与健康信息是公共营养师的基本能力,请简述社区健康资料的内容包括哪些方面?
Itwas3:45inthemorningwhenthevotewasfinallytaken.Aftersixmonthsofarguingandfinal16hoursofhotparliamentary
DirectX是目前Windows98系统中功能强大的多媒体支撑软件,它包含了多个组件,其中哪个组件提供了对DVD的支持(包括DVD的浏览与控制、音频/视频的解码与播放)?
Inthefuturetradethekeydevelopmenttowatchistherelationshipbetweentheindustrializedandthedevelopingnations.The【
最新回复
(
0
)