导航
您当前的位置:首页 > 计算机 > 软件水平
问题:

[问答题] 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如下图所示。中级软件设计师,历年真题,2011年上半年(下午)《软件设计师》真题图5-1菜单结构图现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如下图所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图中的甜点菜单。类MenuItem表示菜单中的菜式。中级软件设计师,历年真题,2011年上半年(下午)《软件设计师》真题图5-2类图【C++代码】#include<iostream>#include<list>#include<string>using namespace std;class MenuComponent{protected:string name;public:MenuComponent(string name){this->name=name;)string getName(  ){return name;)(1);//添加新菜单virtual void print(  )=0;//打印菜单信息};class Menultem:public MenuComponent{private:double price;public:Menultem(string name,double price):MenuComponent(name){this->price=price;double getPrice(  ){return price;)void add(MenuComponent*menuComponent){retum;}//添加新菜单void print(  ){cout<<""<<getName(  )<<","<<getPrice(  )<<endl;)};class Menu:public MenuComponent{private:list<(2)>menuComponents;public:Menu(string name):MenuComponent(name){}void add(MenuComponent*menuComponent)//添加新菜单{(3);}void print(  ){cout<<"\n"<<getName(  )<<"\n-------------------"<<endl;std::list<MenuComponent*>::iterator iter,for(iter=menuComponents.begin(  );iter!=menuComponents.end(  );iter++)(4)->print(  );}};void main(  ){MenuComponent*alIMenus=new Menu("ALL MENUS");MenuComponent*dinerMenu=new Menu("DINER MENU");……//创建更多的Menu对象,此处代码省略alIMenus->add(dinerMenu);//将dinerMenu添加到餐厅菜单中……//为餐厅增加更多的菜单,此处代码省略(5)->print(  );//打印饭店所有菜单的信息
答案解析:

相关问题
关于我们 | 用户指南 | 版权声明 | 给我留言 | 联系我们 | 积分商城 | 答案求助 | 网站地图
Copyright © 2024 www.daanwo.com All Rights Reserved