首页
登录
从业资格
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图
资格题库
2022-08-02
88
问题
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如5-1所示:
图5-1类图【C++代码】#include<List>#include<iostrem>#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 AbstracFile{public:File(string name){(1)=name;}void addChild(AbstractFile*file){return;}void removeChild(AbstractFile*file){return;}(2)getChildren( ){return(3);}};classFolder:public AbstractFile{private:list<AbstractFile*>childList;//存储子目录或文件public:Folder(string name){(4)name;}void addChild(AbstractFile*file){childList.push_back(file);}void removeChild(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(“TestComposite.java”);rootFolder->addChild(compositeFolder);rootFolder->addChild(windowsFolder);compositeFolder->addChild(file);}
图5-1类图【C++代码】#include<List>#include<iostrem>#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);}};classFolder:public AbstractFile{private:list<AbstractFile*>childList;//存储子目录或文件public:Folder(string name){(4)name;}void addChild(AbstractFile*file){childList.push_back(file);}void removeChild(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(“TestComposite.java”);rootFolder->addChild(compositeFolder);rootFolder->addChild(windowsFolder);compositeFolder->addChild(file);}
选项
答案
解析
(1)this->name
(2)list<AbstractFile*>*
(3)NULL
(4)this->name
(5)&childList
本题考查基本面向对象设计中设计模式的运用能力。
组合设计模式主要是表达整体和部分的关系,并且对整体和部分对象的使用无差别。题目中AbstractFile是File类和Folder类的父类,它抽象了两个类的共有属性和行为,在后续main方法的使用中,不论是File对象还是Folder对象,都可被当作AbstractFile对象来使用。另外,由于Folder对象可以聚合其他的Folder对象和File对象,等价于Folder对象可以聚合另一个AbslractFile对象。
在类File和类Folder的构造函数中都需要记录文件或目录的名称,因此空(1)和空(4)处主要是设置对象的名称。因为File对象不再聚合其他的对象,所以File对象没有孩子节点,因此,空(3)处应该返回NULL。getChildren()方法继承自AbstractFile类,因此其返回类型也应保持一致。对于空(5),要求返回Folder对象的孩子对象,因此返回其成员childList的地址。
转载请注明原文地址:https://tihaiku.com/congyezige/2410311.html
本试题收录于:
中级 软件设计师题库软件水平考试初中高级分类
中级 软件设计师
软件水平考试初中高级
相关试题推荐
企业生产及管理过程中涉及到的文件、资料、图表和数据等总称为()。A.人力资源
某公司员工赵忻是一名软件设计师,按公司规定编写软件文档需要上交公司存档。这些软件
《GB8567-88计算机软件产品开发文件编制指南》是()标准,违反该标准而
甲、乙两公司软件设计师分别完成了相同的计算机程序发明。甲公司先于乙公司完成,乙公
王某是某公司软件设计师,每当软件开发完成后均按公司规定编写软件文档,并提交公司存
从生命周期的观点来看,无论硬件或软件,大致可分为规划和设计、开发(外购)和测试、
()是由管理信息系统与计算机辅助设计系统以及计算机辅助制造系统结合在一起形成的
三层B/S结构中包括浏览器、服务器和__()__。A.解释器 B.文件系统
以下关于数据库设计的说法中,正确的是()。A.在逻辑结构设计阶段,规范化程度
在程序设计语言中,()表示了构成语言的各个记号和使用者的关系,而语境是指理解
随机试题
Itisnecessarythatanefficientworker_______hisworkontime.A、accomplishes
Despitethewonderfulactingandgreatstarsthe_____moviecouldn’tholdthea
男性,50岁,头痛6个月,用力时加重,多见于清晨及晚间,常伴有恶心,有时呕吐。经
甲级资质和乙级资质的两个设计单位拟参加某项目的工程设计,下列表述哪项是正确的?(
转基因食品的安全性被广泛质疑,国际社会对其尚存在极大争议,下列关于转基因食品说法
在期权交易中,期权的买方为获得期权合约所赋予的权利而向期权的卖方支付的费用是(
病势处于迁延状态的机制是A.邪正相持B.正虚邪恋C.邪盛正衰D.邪去正虚E.正胜
为保证居民消费价格指数的科学性和可靠性,在选择代表规格品时应遵循的原则有()。A
带下病的治疗原则为A.调补肝肾固摄带脉 B.利湿化浊,固摄带脉 C.疏肝解郁
()揭示了由于工作条件和社会环境原因而导致的收入差异。A.竞争性工资差别 B
最新回复
(
0
)