首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
阅读以下说明和C++代码,将应填入(n)处。 [说明] 在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplor
admin
2008-01-15
61
问题
阅读以下说明和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
软件设计师下午应用技术考试
软考中级
相关试题推荐
某数据库中有供应商关系S和零件关系P,其中,供应商关系模式S(Sno,Sname,SZip,City)中的属性分别表示;供应商代码、供应商名、邮编、供应商所在城市;零件关系模式P(Pno,Pname,Color,Weight,City)中的属性分别表示:
一个局域网中某台主机的IP地址为176.68.160.12,使用22位作为网络地址,那么该局域网的子网掩码为(61),最多可以连接的主机数为(62)。
阅读下列流程图:当用判定覆盖法进行测试时,至少需要设计(44)个测试用例。
在数据库管理系统中,(13)不属于安全性控制机制。
关于数据库索引,以下表述正确的是(57)。①如果对表创建了索引,那么更新、插入和删除表中的记录都将导致额外的系统开销。②全表扫描一定比使用索引的执行效率低。③在字段选择性很低的情况下适用索引。④一个表创建的索引越多,对系统的性能提升越大。
已知某高级语言源程序A经编译后得到机器C上的目标程序B,则(21)。
软件测评相关的标准一般可以分为国际标准、国家标准、行业标准以及企业标准。一般情况下,技术要求最高的是______。A.国际标准B.国家标准C.行业标准D.企业标准
A模块通过简单数据类型(如整型)参数访问B模块,该参数在B模块内用于数据计算,则A、B模块之间存在______。
()不是单元测试主要检查的内容。
零件关系P(零件名,条形码,供应商,产地,价格)中的(12)属性可以作为该关系的主键。查询产于西安且名称为“P2”的零件,结果以零件名、供应商及零件价格分列表示,对应的SQL语句为:SELECT零件名,供应商,价格FROMPWHE
随机试题
A.急性心房颤动B.阵发性心房颤动C.持续性心房颤动D.永久性心房颤动男性,47岁,心悸3年,动态心电图检查示:快心室率心房颤动。服用胺碘酮不能转复为窦性心律。应诊断为
关于二尖瓣狭窄的超声心动图征象的描述,不正确的是
12岁女孩,因高热、寒战3天,行右臀部青霉素注射,但一周来仍持续高热,右髋部疼痛,不能站立行走,右下肢呈外旋位,右髋活动受限,右臀部肿胀,皮温增高,右髋前方有深压痛,X线检查(-),初步诊断为右髋化脓性关节炎。化脓性关节炎可导致
在葡萄糖的有氧氧化过程中和脂肪酸的β-氧化过程中都生成一个同样的2C代谢中间产物,然后进入三羧酸循环被彻底分解为二氧化碳和水。葡萄糖供给过多时,由这个物质可以合成
影响外伤感染演变的因素中,下列哪项是错误的
工程项目总价表和金额按()的合计金额填写。
我国商业银行控制贷款资产风险的主要措施有()。
根据土地增值税法律制度的规定,下列情形中,免予缴纳土地增值税的有()。
甲在空调上使用“兰花”注册商标。根据商标的分类,甲的“兰花”商标能够被归入的商标类型有()。
以下关于Python循环结构的描述中,错误的是()。
最新回复
(
0
)