当前位置:中级软件设计师题库>面向对象技术题库

问题:

[问答题,案例分析题]

阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
说明:某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图10.41所示。
现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图10.42所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图10.41中的甜点菜单。类Menultem表示菜单中的菜式。

注射用水 等张溶液 等渗溶液 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 说明:某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图10.37所示。采用状态(State)模式来实现该纸巾售卖机,得到如图10.38所示的类图。 其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图10.37中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。 热原

阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
说明:某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图10.41所示。
现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图10.42所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图10.41中的甜点菜单。类Menultem表示菜单中的菜式。

参考答案:

  参考解析

MenuComponent是虚基类,其中要定义添加新菜单纯虚函数,函数体在其派生类Menultem和Menu中实现。空(1)处应填入virtualvoidadd(MenuComponent*menuComponent)=0。在类Menu中定义了列表menuComponents,用于保存添加的新菜单,由std::list::iteratoriter可知列表的类型为MenuComponent*,故空(2)处应填入MenuComponent*。添加菜单时,可以从menuComponents列表的前面添加,也可以从menuComponents列表的后面添加,但通过菜单的输出函数可知,菜单是从列表的后面添加的,因此空(3)处应填入menuComponents->push_back(menuComponent)。iter是迭代器,用于遍历菜单列表menuComponents,空(4)处应填入(*iter)。在主函数,打印饭店所有菜单信息的函数调用为allMenus->print()。

在线 客服