首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和Java代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。 【说明】 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
阅读下列说明和Java代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。 【说明】 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
admin
2013-07-09
33
问题
阅读下列说明和Java代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。
【说明】
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图6—1所示的类图。
[Java代码】
import java.util.*;
(1)
class Beverage{//饮料
String description=“Unknown Beverage”;
public
(2)
()(return description;}
public
(3)
;
}
abstract class CondimentDecorator extends Beverage {//配料
(4)
;
}
class Espresso extends Beverage{//蒸馏咖啡
private final int ESPRESSO_PRICE=25;
public Espresso()(description=“Espresso”;}
public int cost(){return ESPRESSO_PRICE;}
}
class DarkRoast extends Beverage(//深度烘焙咖啡
private finalint DARKROAST_PRICE=20;
public DarkRoast(){description=“DarkRoast”;}
public int cost(){rcturn DARKROAST PRICE;}
}
class Mocha extends CondimentDecorator{//摩卡
private final int MOCHA_PRICE=10;
public Mocha(Beverage beverage){
this.beverage=beverage;
}
public String getDescription() {
return beverage.getDescription0 + “,Mocha”;
}
public int cost(){
return MOCHA_PRICE+beverage.cost();
}
}
class Whip extends CondimentDecorator{//奶泡
private finalint WHIP_PRICE=8;
public whip(Beverage beverage){this.beverage= beverage;}
public String getDescription(){
return beverage.getDescription()+“,Whip”;
}
public int cost(){return WHIP_PRICE+beverage.cost();}
}
publ ic class Coffee{
public static void main(String args[]){
Beverage beverage=new DarkRoast();
beverage=new Mocha(
(5)
);
beverage=new Whip(
(6)
);
System.out.println(beverage.getDescription() +”¥” +beverag e.cost());
}
}
编译运行上述程序,其输出结果为:
DarkRoast,Mocha,Whip¥38
选项
答案
(1)abstract (2)String getDescription (3)abstract int cost() (4)Beverage beverage (5)beverage (6)beverage
解析
装饰器模式描述了如何动态地为一个对象添加职责。该模式采用递归方式组合对象,从而允许添加任意多的对象职责。在下列情况下可以使用装饰器模式:
(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
(2)处理那些可以撤销的职责。
(3)当不能采用生成子类的方法进行扩充时。一种情况是可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
装饰器模式的结构如下图所示。其中:
.抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。
.具体组件角色(ConcreteComponent):被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责。
.抽象装饰器(Decorator):维持一个指向构件Corn-ponent对象的实例,并定义一个与抽象组件角色Compo-nent接口一致的接口。
.具体装饰器角色(Concrete Decorator):向组件添加职责。
图6—1中的Beverage对应的就是上图中的抽象类Component、Espresso和DarkRoast对应的是ConcreteCom-ponent,CondimentDecorator对应抽象装饰器Decorator、Mocha和Whip扮演的是类CondimentDecorator的具体装饰器角色Concrete Decorator。
由于类Beverage为其子类提供了统一的操作接口,所以将其定义为抽象类。通过可以在类名前加abstract关键字来定义抽象类,因此(1)处应填入abstract。
(2)和(3)处考查构造函数的的定义。从(2)处构造甬数体中返回值的类型及后续的子类继承程序可知,(2)处应填入String getDescription;从public int cost(){return ES-PRESSO PRICE;}可以看出,cost()函数的返回值为常量,因此(3)处应填入abstract int cost()。
(4)处考查对CondimentDecorator的定义,在该类中声明一类成员变量,并在this.beverage=beverage和returnbeverage.getDescription0+”,Mocha”加以使用。因此(4)处应填入Beverage beverage。
(5)和(6)处考查实例化类模板的方法。类模板必须在实例化后才能使用。实例化类模板时,要给出类型实参。从类图可知,(5)和(6)处均应填入beverage。
转载请注明原文地址:https://kaotiyun.com/show/QiDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在引入自动化测试工具以前,手工测试遇到的问题包括()。①工作量和时间耗费过于庞大②衡量软件测试工作进展困难③长时间运行的可靠性测试问题④对并发用户进行模拟的问题⑤确定系统的性能瓶颈问题⑥软件测试过程的管
黑盒测试法是根据产品的______来设计测试用例的。A.功能B.输入数据C.应用范围D.内部逻辑
反映Web应用客户端交易处理性能的评估指标有(59)。 ①并发用户数 ②交易响应时间 ③交易通过率 ④吞吐量 ⑤点击率
某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若系统中字长为32位,磁盘上的物理块依次编号为:0、1、2、…,那么8192号物理块的使用情况在位示图中的第(12)个字中有所描述。
()主要对与设计相关的软件体系结构的构造进行测试。
下列操作系统中,_____保持网络系统的全部功能,并具有透明性、可靠性和高性能等特性。
若系统中有4个互斥资源R,当系统中有2个进程竞争R,且每个进程都需要i个R(i≤3)时,该系统可能会发生死锁的最小i值是________。
[Java源程序:一个简单的Web服务器]/************************************************************//*WebServer.java*//******
IIS安装的硬盘分区最好选用NTFS格式,是因为(1)和(2)。A.可以针对某个文件或文件夹给不同的用户分配不同的权限B.可以防止网页中的Applet程序访问硬盘中的文件C.可以使用系统自带的文件加密系统对文件或文件夹进行加密
随机试题
慢性细菌性结膜炎发病原因包括()
血清阴性脊柱关节炎不包括下列哪项疾病
50岁女性,右耳垂下无痛性肿物缓慢长大4年,局部有胀感。检查见肿块位于腮腺后下极,表面光滑,质中偏软,不可压缩,与皮肤无粘连。最可能的诊断是
该公司的综合资金成本为()。该公司投资项目的现值指数为()。(计算结果保留4位小数)
一旦商业银行采用了(),未经监管当局批准不可退回使用相对简单的方法。
政府预算的内容及其执行情况应置于()的监督之下。
下列结束角色游戏的方式不适当的是()。
1,2,2,4,16,()
在金本位货币制度下,设1英镑铸币的含金量为7.32238克纯金,1美元铸币的含金量为1.50463克纯金,在英国和美国之间运送1英镑的费用及其他费用约为0.03美元,试计算:(1)英镑和美元的铸币平价;(2)美国的黄金输入点和黄金输
Beforethedisastrousearthquaketherewas______chaos.
最新回复
(
0
)