版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 模拟 软件设计师面向对象程序设计( 三 )填空题第1题:阅读下列说明和Java 代码,将应填入(n)处的字句写在对应栏内。_ 说明现欲构造一棵文件 / 目录树,采用组合 (Composite) 设计模式来设计,得到的类图如图 18-20 所示。Java代码 import Java.util.ArrayList;import Java.util.List;(1) class AbstractFileprotected String name;public void printName()System.out.printin(name); public abstract boolean addC
2、hild(AbstractFile file);public abstract boolean removeChild(AbstractFile file);public abstract ListAbstractFile getChildren();class File extends AbstractFilepublic File(String name)=name;public boolean addChild(AbstractFile file)return false;public boolean removeChild(AbstractFile file)retu
3、rn false;public ListAbstractFile getChildren()return(1);class Foider extends AbstractFiieprivate ListAbstractFilechildList;public Folder(String name)=name ;this.childList=new ArrayList AbstractFile() ;public boolean addChild(AbstractFile file)returnchildList.add(file);public boolean removeC
4、hild(AbstractFile file)returnchildList.remove(file);public(3) AbstractFilegetChildren()return(4):public class Clientpublic static void main(Stringargs)/ 构造一个树形的文件 / 目录结构AbstractFile rootFoider=new Foider(C:);AbstractFile compositeFolder=new Folder(composite);1AbstractFile windowsFoider=new Foider(wi
5、ndows);AbstractFile file=new File(TeStCompoSite.java);rootFolder.addChild(compositeFoider);rootFoider.addChild(windowsFolder);compositeFolder.addChild(file);/打印目录文件树printTree(rootFolder);private static void printTree(AbstractFile ifile)ifile.printName();ListAbstractFilechildren=ifile.getChildren();i
6、f(children=null)return ;for(AbstractFile file:children)(5);该程序运行后输出结果为:C:compositeTestComposite.javaWindows参考答案:1、 abstract 2、null 3、 List 4、childList 5、printTree(file)详细解答:第2题:阅读下列说明和C+代码,将应填入(n)处的字句写在对应栏内。_ 说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表18-6 所示。为支持将来模拟更多种类的飞机,采用策略设计模
7、式 (Strategy) 设计的类图如图 18-21 所示。在图 18-21 中, AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane 、 Fighter和 Harrier分别描述具体的飞机种类,方法fly() 和 takeOff() 分别表示不同飞机都具有飞行特征和起飞特征;类 FlyBehavior 与 TakeOffBehavior 为抽象类,分别用于表示抽象的飞行行为与2起飞行为;类 SubSonicFly 与 SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类 VerticalTakeOff与 LongDistanceTakeOff
8、分别描述垂直起飞与长距离起飞的行为。C+ 代码 #include iostream using namespace std;class FlyBehaviorpublic:virtual void fly()=0; ;classSubSonicFly : public FlyBehaviorpublic:void fly()cout 亚音速飞行 ! end1; ;Class SuperSonicFly: public FlyBehaviorpublic:void fly()cout 超音速飞行 ! end1; ;class TakeOffBehaviorpublic:virtual void
9、takeOff()=0; ;class VerticalTakeoff:public TakeOffBehaviorpublic:void takeOff()cout 垂直起飞 ! end1;class LongDistanceTakeoff: public TakeOffBehaviorpublic:void takeOff()cout 长距离起飞 ! end1;class AirCraftprotected :(1);(2);public:void fly()(3);void takeOff()(4); ;class Helicopter: public AirCraftpublic:He
10、licopter()flyBehavior=new(5);takeoffBehavior=Flew(6);(7)if(!flyBehavior)deleteflyBehavior;if(!takeOffBehavior)delete takeOffBehavior;/其他代码省略3参考答案:1、FlyBehavior*flyBehavior2、TakeOffBehavior* takeOffBehavior(1)与空 (2) 答案可互换。 3 、flyBehavior-fly()4、takeOffBehavior-takeOff()5、SubSonicFly() 6、VerticalTakeO
11、ff() 7、 Helicopter()详细解答:第3题:阅读下列说明和C+代码,将应填入(n)处的字句写在对应栏内。_ 说明某公司的组织结构图如图 18-23 所示,现采用组合 (Composition) 设计模式来构造该公司的组织结构,得到如图 18-24 所示的类图。其中, Company为抽象类,定义了在组织结构图上添加 (Add) 和删除 (Delete) 分公司 / 办事处或者部门的方法接口。类 ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和 FinanceDepartment 分别表示人力资源部和财务部。
12、 C+ 代码 #include iostream #include list #include string using namespace std;class Company / 抽象类protected:string name;public:Company(string name)(1)=name;(2);/ 增加子公司、办事处或部门(3);/ 删除子公司、办事处或部门 ;class ConcreteCompany :public Companyprivate:list(4)children;/ 存储子公司、办事处或部门public:ConcreteCompany(string name)
13、: Company(name)void Add(Company *c)(5).push_back(c) ;void Delete(Company *c)(6).remove(c) ; ;4class HRDepartment :public Companypublic:HRDepartment(string name): Company(name)/ 其他代码省略 ;class FinanceDepartment:public Companypublic:FinanceDepartment(string name):Company(name)/ 其他代码省略 ;void main()Concr
14、eteCompany *root=new ComcreteCompany( 北京总公司 ) ; root- Add(new HRDepartment( 总公司人力资源部 ) ;root- Add(new FinanceDepartment( 总公司财务部 ) ; ConcreteCompany *comp=new ConcreteCompany( 上海分公司 ) ; comp- Add(new HRDepartment( 上海分公司人力资源部 ) ; comp- Add(new FinanceDepartment( 上海分公司财务部 ) ;(7) ;Concretecompany *compl
15、=new ConcreteCompany( 南京办事处 ) ; comp1- Add(new HRDepartment( 南京办事处人力资源部 ) ; comp1- Add(new FinanceDepartment( 南京办事处财务部 ) ;(8);/ 其他代码省略参考答案:1、 mis- name 2、 virtualvoidAdd(Company *c)=03、 virtualvoidDelete(Company *c)=04、 Company* 5、 children6、children7、root- Add(comp) 8 、comp-Add(comp1)详细解答:第4题:阅读下列说
16、明和C+代码,将应填入空(n)处的字句写在对应栏内。_ 说明某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图18-27 所示。现在采用组合 (Composition) 模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 18-28 所示的类图。其中MenuComponent为抽象类,定义了添加 (add) 新菜单和打印饭店所有菜单信息 (print) 的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋5菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图18-27 中的甜点菜单。类 MenuItem 表示菜单中的菜式。C+ 代码 #includ
17、e iostream #include list#Include string using namespace std;class MenuComponentprotected:string name ;public:MenuComponent(String name)(this-name=name;string getName()return name; (1) ; / 添加新菜单virtual void print()=0;/ 打印菜单信息 ;class Menultem:public MenuComponentprivate:double price;public:Menultem(st
18、ring name ,double price) :MenuComponent(name)(this- price=price ;double getPrice()return price;void add(MenuComponent *menuComponent)retum ;/ 添加新菜单void print()cout getName0 , getPrice0 end1; ;class Menu :public MenuC0mponentprivate:list(2)menuComponents;public:Menu(string name):MenuComponent(name)vo
19、id add(MenuComponent *menuComponent)/ 添加新菜单(2);VOid print()cout n getNameO n- end1;Std : listMenuComponent*: iterator iter,for(iter=menuComponents.begin0 ;iter!=menuComponents.end0 ; iter+)(4)- print(); ;void main()MenuComponent *al IMenus=new Menu(ALL MENUS); MenuComponent *dinerMenu=new Menu(DINER
20、 MENU); 创建更多的 Menu对象,此处代码省略alIMenus- add(dinerMenu) ;将 dinerMenu 添加到餐厅菜单中6 为餐厅增加更多的菜单,此处代码省略(5) - printO ; 打印饭店所有菜单的信息参考答案:1 、virtualvoidadd(MenuComponent*menuComponent)=02 、MenuComponent*3、menuComponents.push_back(menuComponent)4、(*iter) 5、 allMenus详细解答:第5题:阅读下列说明和Java 代码,将应填入(n)处的字句写在对应栏内。_ 说明某饭店在
21、不同的时段提供多种不同的餐饮,其菜单的结构图如图18-29 所示。现在采用组合 (Composition) 模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 18-30 所示的类图。其中MenuComponent为抽象类,定义了添加 (add) 新菜单和打印饭店所有菜单信息 (print) 的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图18-29 中的甜点菜单。类 MenuLtem表示菜单中的菜式。Java代码 import j ava.util. *;(1) Menucomponentprot
22、ected String name;(2) ;/ 添加新菜单public abstract void print0;打印菜单信息public String getName0return name, class Menultem extends MenuComponentprivate double price;public Menultem(String name,double price)=name ;this.price=price;public double getPrice0return price;public void add(Menucomponent menuComponent)return; 添加新菜单public void print07System.out.print(+getName0);System.out.println(,+getPrice0);class Menu extends MenuComponentprivate List MenuComponentmenu Components= new ArrayList MenuComponent 0;public Menu(String name)=name;public void add(Menucomponen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030绿色债券发行标准完善与投资者行为研究
- 2025-2030绿氢合成氨项目经济性测算与碳排放交易收益模型
- 2025-2030绝缘栅双极型晶体管结构优化与可靠性
- 2025-2030细胞培养基无血清配方研发与生产成本控制优化报告
- 2025-2030纳米药物递送系统临床试验进展与产业化障碍分析报告
- 2025-2030纳米光刻设备行业海外市场拓展与国际化战略研究
- 工贸轻工安全知识考试题库及答案解析
- 2025-2030精酿啤酒消费场景拓展与渠道冲突解决方案
- 2025-2030精酿啤酒原料本地化采购与风味稳定性控制
- 2025-2030精装房政策推动下免漆门工程渠道发展预测
- 稀有金属知识培训班课件
- 2025小学五年级英语句型转换专项卷
- 现代化三级甲等医院住院患者身份识别腕带管理制度
- 橡胶质量知识培训
- 珠宝品牌IP联名项目分析方案
- 2025年国家开放大学《科学社会主义理论与实践》期末考试备考题库及答案解析
- 屋面护栏围网施工方案
- 全国2025年7月自考00277行政管理学试卷及答案
- 法律职业资格考试客观题(试卷一)试卷与参考答案(2025年)
- 2026中国大唐集团有限公司校园招聘备考考试题库附答案解析
- 2025年新高考一卷数学试卷及答案
评论
0/150
提交评论