问答题
阅读下列说明和C++代码,在 (n) 处填入适当的字句。
[说明]
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如10.16所示。
#include <list>
#include <iostream>
#include <string>
using namespace std;
class AbstractFile
protected:
string name; //文件或目录名称
public:
void printName()cout<<name; //打印文件或目录名称
virtual void addChild (AbstractFile *file) =0; //给一个目录增加子目录
或文件
virtual void removeChild(AbstractFile *file) =0; //删除一个目录的子目
录或文件
virtual list<AbstractFile*> *getChildren() =0; //获得一个目录的子目录
或文件
;
class file:public AbstractFile
public:
File (string name) (1) =name;
void addChild (AbstractFile *file)return;
void removeChild (AbstractFile *file)return;
(2) getChildren()(return (3) ;
;
class Folder :public AbstractFile
private:
list <AbstractFile*> childList: //存储子目录或文件
public:
Folder (string name) (4) =name;
void addChild(AbstractFile*file) childList .push_back(file);
void rernoveChild (AbstractFile*file) childList. remove( file);
list<AbstractFile*>*getChildren()(return (5) ;
;
void main()
//构造一个树型的文件/目录结构
AbstractFile *rootFolder=new Folder("c:\\ ");
AbstractFile*compositeFolder=new Folder("composite");
AbstractFile *windowsFolder=new Folder( "windows");
AbstractFile *file=new File("TestCompositejava");
rootFolder->addChild( compositeFolder);
rootFolder->addChild(windowsFolder);
composit eFolder->addChild(file);