阅读下列说明和c++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如6—7所示: 【c++代码】 #include #include #include

admin2010-05-08  34

问题 阅读下列说明和c++代码,将应填入  (n)  处的字句写在答题纸的对应栏内。
【说明】
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如6—7所示:

【c++代码】
#include<1ist>
#include
#include
using namespace std;
class AbstractFile{
protected:
string name;//文件或目录名称
public:
void printName(){cout<virtual void addChild(AbstractFile*file)=0 ;  //给一个目录增加子目录或文件
virtual void removeChild(AbstractFile*file)=O;  //删除一个目录的子目录或文件
virtual list*getChildren()=0;  //获得一个目录的子目录或文件
};
class File:public AbstractFile{
public:
File(string name){  (1)  =name;)
void addChild(AbstractFile*file){return ;)
void removeChiid(AbstractFile*file){return;}(2)  getChildren(){return  ( 3 )  ;}
};
class Folder:public AbstractFile{
private:
listchildList;    //存储子目录或文件
public:
Folder(string name){  (4)  =name;}
void addChild(AbstractFile*file){childList.push back(file);}
void removeChiid(AbstractFile*file)(chiidList.remove(file);}
list*getChildren(){return  (5)  ;)
};
voidmain(){
//构造一个树形的文件/目录结构
AbstractFile*rootFolder=new Folder(“C:\\”);
AbstractFile*compositeFolder=flew Folder(”composite”);
AbstractFile*windowsFolder=new Folder(”windows”);
AbstractFile*file=new File(”TestComposite.java”);
rootFolder->addChild(compositeFolder);
rootFolder->addChild  (windowsFolder);
compositeFolder->addChiid(file);
)

选项

答案(1)this一>name(2)list*(3)NULL(4)this->name(5)&childList

解析 Composite模式定义:将对象以树型结构组织起来,以达成“部分一整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。Composite比较容易理解,想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。AbstractFile为一个抽象文件类,其作用主要是实现对文件或者文件夹的抽象。文件类File继承自AbstractFile。File(stringname)为File类的一个属性,用于获取文件名称。Addchild方法用来给一个目录增加子目录或文件。Removechild方法用于删除一个目录的子目录或文件。Getchildren方法用于获取一个目录或文件,所以返回值类型应该是一个列表形式的AbstractFile,但文件本身不包括子目录,故返回NULL。Fold类表示一个文件夹,属性Fold.er用于获取文件夹名称,Getchildren方法返回值应为List型的AbstractFile对象指针。
转载请注明原文地址:https://kaotiyun.com/show/kSDZ777K
0

相关试题推荐
最新回复(0)