试题五(共 15 分)
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如 5-1所示:
【C++代码】
#include
#include
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 *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 childList; // 存储子目录或文件
public :
Folder(string name) { (4) = name; }
void addChild(AbstractFile *file) { childList.push_back(file); }
void removeChild(AbstractFile *file) { childList.remove(file);}
list *getChildren() { return (5) ; }
};
void main() {
// 构造一个树形的文件/目录结构
AbstractFile *rootFolder = new Folder("c:\\");
AbstractFile *compositeFolder = new Folder("composite");
AbstractFile *windowsFolder = new Folder("windows");
AbstractFile *file = new File("TestComposite.java");
rootFolder->addChild(compositeFolder);
rootFolder->addChild(windowsFolder);
compositeFolder->addChild(file);
}
订单号:
遇到问题请联系在线客服
订单号:
遇到问题请联系在线客服