阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。【说明】 已知某类库开发商提供了一套类
阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如下图所示。其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。
当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,例如上图中的类MyApplication和类MyDocument,并分别实现Application和 Document类中的某些方法。
已知Application类中的openDocument方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:
1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;
2.创建文档对象;
3.通过文档对象打开文档;
4.通过文档对象读取文档信息;
5.将文档对象加入到Application的文档对象集合中。
【C++代码】
include<iostream>
include<vector>
using namespace std;
class Document{
public:
void save(){/*存储文档数据,此处代码省略*/)
void open(string docName){ /*打开文档,此处代码省略*/)
void close(){ /*关闭文档,此处代码省略*/)
virtual void read(string docName) =0;
};
class Appplication{
private:
vector<(1)> docs; /*文档对象集合*/
public:
bool canOpenDocument(string docName){
/*判断是否可以打开指定文档,返回真值时表示可以打开,
返回假值表示不可打开,此处代码省略*/
}
void addDocument(Document * aDocument){
/*将文档对象添加到文档对象集合中*/
docs.push_back((2));
}
virtual Document * doCreateDocument()=0;/*创建一个文档对象*/
void openDocument(string docName){/*打开文档*/
if ((3)){
cout<<“文档无法打开!”<<endl;
return;
}
(4) adoc=(5);
(6);
(7);
(8);
}
};
(1)Document* (2)aDocument (3)!canOpenDocument(docName) (4)Document* (5)doCreateDocument() (6)adoc->open(docName) (7)adoc->read(docName) (8)addDocument(adoc) 解析:本题考查了C++语言的应用能力和模板方法设计模式。空(1)考查了C++标准库中Vector模板类的使用,由于Vector模板类可以存储任意类型,在定义时需要指定其存储类型,根据后面的代码,能够加入到该文档集合对象中的元素是各个文档的指针,因此空(1)处的类型应该为文档指针类型。空(2)处将文档指针加入文档集合对象中。从空(3)开始的代码属于图中Application类的OpenDocument方法,该方法是模板方法,因此,需根据题目给出的步骤一一对应填空。空(3)处判断能否打开文档,需要调用父类自己的方法canOpenDocument。其次需要创建文档对象,调用doCreateDocument方法,接着通过文档对象打开和读取文档,最后通过addDocument方法将该文档对象加入到文档对象集合中。所有这些方法都是在父类或文档对象中进行定义,不涉及到具体的子类,子类负责要实现这些模板方法中需要调用的方法以便运行时被调用。
再一个数学小题征解证明1+n/1!+n^2/2!+.+n^n/n!与(e^n)/2为等价无穷大量. 数学 2020-04-07 …
《处方管理办法试行》规定,具有处方权的医师开具处方应:( )A.记载患者的一般项目应清晰、完整,病历 职业技能鉴定 2020-06-07 …
水平长直轨道上紧靠放置n个质量为m可看作质点的物块,物块间用长为l的细线连接,开始处于静止状态,轨 物理 2020-06-12 …
根据下面语段中的拼音根据下面语段中的拼音写出相应的汉字.避开(xuān)嚣,抛开烦恼,独自享受温馨 语文 2020-07-01 …
反应速率v=Δc/Δt能否展开成v=Δn/﹙Δt×V﹚,这里的V是变化的体积还是反应一段时间后的体 化学 2020-07-21 …
文章开头处细致的描写了牛耳朵的花,结尾处有些到牛耳朵草的花,作者是采用了首尾呼应的方法,这样写的好处 语文 2020-11-04 …
某山山脚的M处到山顶的N处有一条长为600米的登山路,小李沿此路从M走到N,停留后再原路返回,期间小 数学 2020-11-06 …
如图是船闸的示意图,初始时船在下游且所有阀门和闸门都处于关闭状态,如图所示,①-⑩为若干操作步骤:① 物理 2020-11-23 …
数字信号处理,设离散系统方程为y(n)=x(n)+2x(n-1)+3x(n-2)+4x(n-3).设 数学 2020-12-15 …
用多用电表进行了几次测量,指针分别处于a和b的位置,如图,若多用电表的选择开关处于下面表格中所指的挡 物理 2021-01-01 …