首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图10.43所示。 现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图10.43所示。 现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可
admin
2018-07-25
64
问题
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图10.43所示。
现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图10.44所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图10.43中的甜点菜单。类MenuItem表示菜单中的菜式。
【Java代码】
import java.util.*
_____(1) MenuComponent{
protected String name;
_____(2);//添加新菜单
public abstract void print(); //打印菜单信息
public String getName(){return name;}
}
class MenuItem extends MenuC0mponent{
private double price;
public MenuItem(String name,double price){
this.name:name; this.price=price;
}
public double getPrice(){return price;}
public void add(MenuComponent menuComponent){return ;}//添加新菜单
public void print(){
System.out.print(’’ ’’+getName());
}
}
class Menu extends MenuComponent{
private List<MenuComponent>menuComponents=new ArrayList<MenuComponent>();
public Menu(String name){this.name=name;}
public void add(MenuComponent menuComponent){
menuComponents._____(3);
}
public void print(){
System.out.print(’’\n’’+getName());
System.out.println(’’,’’+’’----------------------");
Iterator iterator=menuComponents.iterator();
while(iterator.hasNext()){
MenuComponent menuComponent=(MenuComponent)iterator.next();
_____(4);
}
}
}
class MenuTestDrive{
public static void main(String args[]){
MenuComponent al1Menus=new Menu(’’ALL MENUS’’);
MenuComponent dinerMenu=new Menu(’’DINER MENU’’);
…//创建更多的Menu对象,此处代码省略
allMenus.add(dinerMenu); //将dinerMenu添加到餐厅菜单中
…//为餐厅增加更多的菜单,此处代码省略
_____(5);//打印饭店所有菜单的信息
}
}
选项
答案
(1)abstract class或public abstract class (2)public abstract void add(MenuComponent menuComponent)或abstract void add(MenuComponent menuComponent)或protected abstract void add(MenuComponent menuComponent) (3)add(menuComponent) (4)menuComponent.print() (5)allMenus.print()
解析
组合模式将对象组合成树形结构以表示“整体一部分”的层次结构,其中的组合对象使得用户可以组合基元对象以及其他的组合对象,从而形成任意复杂的结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
组合模式的结构如图10.46所示。
图中各部分说明如下。
类Component为组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component的子部件。
类Leaf在组合中表示叶节点对象,叶节点没有子节点,并在组合中定义图元对象的行为。
类Composite定义有子部件的那些部件的行为,存储子部件,并在Component接口中实现与子部件有关的操作。
类Client通过Component接口操纵组合部件的对象。下列情况可以使用组合模式。
表示对象的整体一部分层次结构。
希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
本试题将组合模式应用到饭店菜单的构造中。图10.44中的类MenuComponent对应图10.46中的Component,Menultem对应Leaf,Menu对应Composite。在实现时,通常都会把Component定义为抽象类。
在Java中,用abstract关键字限定的类即为抽象类,所以空(1)处应填入abstract class。根据注释,空(2)处应该定义功能为“添加新菜单”的成员函数。在子类MenuItem和Menu中都可以看到add成员函数,说明子类中重置了父类中的成员函数。所以空(2)处应填入public abstract void add(MenuComponent menuComponent)。
由图10.44可以看出,Menu中包含了MenuComponent的对象集合。程序中用Java中的list来实现这个聚合关系,这样就可以利用list中提供的各种方法了。list中用于添加元素的方法是add,所以空(3)处应填入add(menuComponent)。
空(4)处出现在方法print中,其功能是打印出所有菜单的信息。这里使用了list中的迭代器类iterator遍历每个子菜单,并调用子菜单中定义的print方法打印该子菜单的信息。空(4)处应填入menuComponent.print()。
为了能够在main中打印出所有的菜单信息,必须使用表示菜单结构中最项层菜单的对象来调用print,因此空(5)处应填入allMenus.print()。
转载请注明原文地址:https://kaotiyun.com/show/27DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
上述配置中是否有问题?请指出并说明理由。解释配置中画线部分内容含义?
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。在最理想和保守的估计中加速开发进度要着重抓的共同环节是哪些?请用50字以内的文字加以说明。
ADSL技术可以充分利用现有铜线网络,只要在用户线路两端加装ADSL设备即可为用户提供服务。请从以下术语选择适当的编号,将图5-9所示的拓扑结构中(1)~(4)空缺处的名称填写完整。【供选择的答案】A.程控交换机B.二层交换机
阅读以下-基于代理服务器的ADSL宽带接入的技术说明,根据要求回答问题1至问题5。【说明】非对称数字用户线(AsymmetricDigitalSubscriberLine,ADSL)是一种利用现有的传统电话线路高速传输数字信息的技术。某单位
阅读以下交换机Switch01的部分配置信息,结合图2-8所示的网络拓扑图将(1)~(8)空缺处的内容(命令或解释)填写完整。Switch>enable(进入特权模式)S
阅读以下说明,回答问题1、问题2、问题3、问题4和问题5,将解答填入对应栏内。[说明]某单位要拟建一个小型局域网,其图如9-1所示,PCI、PC3、PC5的IP地址分别为10.191.140.2,10.191.140.3,10.191.1
请问无线局域网的工作模式有哪几种?平时所用的手机可漫游在不同的基站之间,WLAN工作站也可漫游,请问WLAN的“漫游”含义是什么?
将图2-2中(1)和(2)空缺名称填写在对应的解答栏内。目前在使用ADSL访问Internet时,要不要收取电话费?
在由L2TP构建的VPN中,主要由(1)和(2)两种类型的服务器构成。1.将图2-7中(1)和(2)处空缺名称填写在相应位置。2.简要说明两种服务器的主要作用。某路由器(在图2-7中没有标出)的部分配置信息如下所示,请解释其中注明部分的
由于面向3G移动电话的电子商务网站看不到用户进行销售服务,因此,对用户身份进行认证是必要。通常,在Internet中进行电子签名的认证过程如下:①文件的发送者将要发送的文件生成(1);②用发送者的(2)对摘要加密后,将其添加到文件中;
随机试题
男,50岁,肝炎病史20年,肝区持续性疼痛3个月,伴乏力,消瘦、食欲减退,恶心,低热,黄疸,查体肋下腋前线可及肿大之肝脏,质硬。最可能的诊断是
根据《民法通则》的规定,全民所有制企业法人以()承担民事责任。
甲、乙、丙、丁四人共同投资设立A普通合伙企业。合伙协议的部分内容如下:由甲、乙执行合伙企业事务,丙、丁不得过问企业事务;利润和损失由甲、乙、丙、丁平均分配和分担。在执行合伙企业事务过程中,为提高管理水平,甲自行决定聘请王某担任合伙企业经营管理人员。因合伙企
1/2,5/7,11/16,()。
在现代社会,人们多认为儿童本性是天真无邪的,课程内容的选择应更多考虑儿童的兴趣和需要。制定课程目标、选编课程内容是课程组织的基础,人们对儿童身心发展规律的认识是课程组织的()。
设函数f(x)在[0,1]上有连续的导数,f(0)=1,且={(x,y)|0≤y≤t一x,0≤x≤t}(0<t≤1),求f(x)的表达式.
上图所示的V模型中,与开发阶段中概要设计对应测试阶段称为(1)。在系统或配置项测试阶段处应采用(2)方法。请将(1)和(2)处的内容填入相应位置。请完成下面叙述,在(3)、(4)处填入恰当的内容,将解答填写在对应栏中。从上图中水平对应关系看,左
Everygeologistisfamiliarwiththeerosioncycle.Nosoonerhasanareaoflandbeenraisedalivesea-levelthanitbecomess
Ifourbrainswerecomputers,we’dsimplyaddachiptoupgradeourmemory.Thehumanbrain,therefore,ismore【M1】______comple
Itiseasytobecynicalaboutgovernment—andrarelydoessuchcynicismgounrewarded.Take,forinstance,policytowardswomen.
最新回复
(
0
)