软件设计师面向对象程序设计(三)_第1页
软件设计师面向对象程序设计(三)_第2页
软件设计师面向对象程序设计(三)_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 模拟 软件设计师面向对象程序设计 ( 三 )填空题第 1 题:阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内 说明 现欲构造一棵文件 / 目录树,采用组合 (Composite) 设计模式来设计,得到 的类图如图 18-20 所示。Java 代码 ;(1) class AbstractFile protected String name ; public abstract boolean addChild(AbstractFile file)public abstract boolean removeChild(AbstractFile file)public abs

2、tract ListAbstractFile getChildren() ;class File extends AbstractFile;return false(1) ;return returnpublic File(String name)=name; public boolean addChild(AbstractFile file)return false public boolean removeChild(AbstractFile file) public List AbstractFile getChildren()return class Foider e

3、xtends AbstractFiie private List AbstractFile childList ; public Folder(String name)=name ; this.childList=new ArrayList AbstractFile () ; public boolean addChild(AbstractFile file)childList.add(file);public boolean removeChild(AbstractFile file):childList.remove(file);public (3) AbstractFi

4、le getChildren()return(4)public class Clientpublic static void main(Stringargs) / 构造一个树形的文件 / 目录结构AbstractFile rootFoider=new Foider(C:) ;AbstractFile compositeFolder=new Folder(composite)AbstractFile win dowsFoider=new Foider(wi ndows) AbstractFile file=n ew File(TeStCompoSite.java) rootFolder.addC

5、hild(compositeFoider) ; rootFoider.addChild(w in dowsFolder) ; compositeFolder.addChild(file) ;/打印目录文件树prin tTree(rootFolder) ;private static void prin tTree(AbstractFile ifile)children=ifile.getChildren() return ;:children)ifile.pri ntName() List fly() 4、takeOffBehavior- takeOff() 5、SubSonicFly() 6

6、 、VerticalTakeOff() 7、Helicopter。详细解答:第3题: 阅读下列说明和C+弋码,将应填入(n)处的字句写在对应栏内。说明某公司的组织结构图如图18-23所示,现采用组合(Composition)设计模式 来构造该公司的组织结构,得到如图18-24所示的类图。其中,Company为抽象类,定义了在组织结构图上添加(Add)和删除 (Delete)分公司/办事处或者部门的方法接口。类 ConcreteCompany表示具体的 分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartme nt和FinanceDepartment分别表示人力资源部和财务部

7、。C+代码#include iostream#include list #include string using n amespace std ;class Company / 扌由象类protected :stri ng n ame ;public :Company(string name)(1)=name; (2) ;/增加子公司、办事处或部门(3) ;/删除子公司、办事处或部门;class ConcreteCompany : public Companyprivate :list (4)children ;/存储子公司、办事处或部门public :ConcreteCompany(str

8、ing name) : Company(name) void Add(Company *c)(5) .push_back(c) ; void Delete(Company *c)(6) .remove(c) ; ;class HRDepartment : public Company public :HRDepartment(string name) : Company(name)/ 其他代码省略;class FinanceDepartment : public Companypublic :FinanceDepartment(string name): Company(name) /其他代码

9、省略;void mai n()ConcreteCompany *root=new ComcreteCompany(” 北京总公司);root- Add(new HRDepartment(” 总公司人力资源部);root- Add(new FinanceDepartment(” 总公司财务部); ConcreteCompany *comp=new ConcreteCompany(” 上海分公司); comp- Add(new HRDepartment(” 上海分公司人力资源部); comp- Add(new FinanceDepartment(” 上海分公司财务部);Concretecompan

10、y *compl=new ConcreteCompany(” 南京办事处); comp1- Add(new HRDepartment(” 南京办事处人力资源部);II南京办事处财务部);参考答案:1、mis- name 2、virtual voidAdd(Company *c)=0 3、virtual void Delete(Company *c)=0 4、Company* 5、children 6、children 7、root- Add(comp) 8、comp- Add(comp1)详细解答:第4题:阅读下列说明和C+弋码,将应填入空(n)处的字句写在对应栏内。说明某饭店在不同的时段提供

11、多种不同的餐饮,其菜单的结构图如图18-27所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便 地在其中增加新的餐饮形式,得到如图18-28所示的类图。其中Menu Comp on en为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息 (print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋 菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 18-27 中的甜点 菜单。类 MenuItem 表示菜单中的菜式。C+ 代码 #include iostream #include list #Include string usin

12、g namespace std ; class MenuComponent protected : string name ; public :Menu Comp onen t(Stri ng n ame)(this- n ame=n am; string getName()return name ; (1) ; / 添加新菜单virtual void print()=0 ;/ 打印菜单信息 ;class Menultem :public MenuComponent private :double price ;public :Menultem(string name ,double pric

13、e) :MenuComponent(name)(this- price=price ;double getPrice()return price; void add(MenuComponent *menuComponent)retum ; / 添加新菜单 void print()cout getName0,getPrice0 end1; ;class Menu :public MenuC0mponent private :list (2)menuComponent;spublic :Menu(string name) :MenuComponent(name) void add(MenuComp

14、onent *menuComponent)/ 添加新菜单 (2) ; VOid print()cout n getNameOnend1;Std :list MenuComponent*: 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 MENU;)/创建更

15、多的Menu对象,此处代码省略allMenus- add(dinerMenu) ;/将 dinerMenu 添加到餐厅菜单中/为餐厅增加更多的菜单,此处代码省略-printO ;/打印饭店所有菜单的信息参考答案:1、 virtual voidadd(MenuComponent *menuComponent)=0 2、Menu Comp onent*3、menu Comp onen ts.push_back(me nu Comp onen t4、(*iter) 5、 allMe nus详细解答:第5题:阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。说明某饭店在不同的时段提供多种

16、不同的餐饮,其菜单的结构图如图18-29所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便 地在其中增加新的餐饮形式,得到如图18-30所示的类图。其中Menu Comp on en为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息 (print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋 菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 18-29中的甜点 菜单。类MenuLtem表示菜单中的菜式。Java代码import j ava.util. *;(1) Menu comp onentprotected Stri ng

17、 n ame ;(2) ; /添加新菜单public abstract void printO;/打印菜单信息public String getNameOreturn name,class Men ultem exte nds Menu Comp onentprivate double price ;public Menultem(String name,double price)=name ; this.price=price ;public double getPriceOreturn price; public void add(Menucomponent menuCo

18、mponent)return; / 添加新菜单public void prin t0;(”, +getPriceO);class Menu exte nds Menu Comp onentprivate List new ArrayListMenu Comp onemenu Comp onen ts=Menu Comp on ent 0;public Menu(String name)=name; public void add(Me nu comp onent men uComp onen t)/添加新菜单menu comp onen ts.(3);public void prin t0;(”, +);Iterator iterator-me nuComp onen ts.iteratoro;while(iterator.hasNext0)Menu Comp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论