阅读下列说明和C++代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图18-15所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,比如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。
当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,例如图18-15中的类MyApplication和类MyDocument,并分别实现Application类和Document类中的某些方法。
已知Application类中的openDocument()方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示。
(1)检查文档是否能够被打开,若不能打开,则给出出错信息并返回。
(2)创建文档对象。
(3)通过文档对象打开文档。
(4)通过文档对象读取文档信息。
(5)将文档对象加入到Application的文档对象集合中。
[C++代码]
#include<iostream>
#include<vector>
using namespace std;
C1ass 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 *aD0cument)
/*将文档对象添加到文档对象集合中*/
docs.push_back( (2) );
virtual Document *doCreateDocument()=0;/*创建一个文档对象*/
void openDocument(string docName)/*打开文档*/
if( (3) )
cout<<"文档无法打开!"<<end1;
return;
(4) adoc= (5) ;
(6) ;
(7) ;
(8) ;
;
(4)处填()。