首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。 采用状态(State)模式来实现
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。 采用状态(State)模式来实现
admin
2012-03-21
60
问题
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
[说明]
某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。
采用状态(State)模式来实现该纸巾售卖机,得到如图6-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图6-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。
[Java代码]
import java.util.*;
interface State {
public void insertQuarter(); //投币
public void ejectQuarter(); //退币
public void turnCrank(); //按下“出纸巾”按钮
public void dispense(); //出纸巾
}
class TissueMachine {
(1) soldOutStater noQuarterState, hasQuarterState, soldState,state;
state - soldOutState;
int count=0; //纸巾数
public TissueMachine (int numbers) { /*实现代码省略*/}
public State getHasQuarterState() { return hasQuarterState; }
public State getNoQuarterState() { return noQuarterState; }
public State getSoldState() { return soldState; }
public State getSoldOutState() { return soldOutState; }
public int getCount() { return count; }
//其余代码省略
}
class NoQuarterState implements State {
TissueMachine tissueMachine;
public void insertQuarter() {
tissueMachine. setState( (2) );
}
//构造方法以及其余代码省略
}
class HasQuarterState implements State {
TissueMachine tissueMachine;
public void ejectQuarter() {
tissueMachine.setState( (3) );
}
//构造方法以及其余代码省略
}
class SoldState implements State {
TissueMachine tissueMachine;
public void dispense() {
if(tissueMachine .getCount()>0) {
tissueMachine.setState( (4) );
}else {
tissueMachine.setState( (5) ); }
}
}
(5)
选项
答案
tissueMachine. getSoldOutState()
解析
本题考查状态(State)模式的概念及应用。
状态模式是一种对象的行为型模式,允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。状态模式的类图如下所示:
状态模式主要解决的是控制一个对象转换的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。
题目利用状态模式来实现一个简易的纸巾售卖机。售卖机的状态转换图已经在题目中给出,类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别用来表示售卖机的4种不同状态,对应于状态模式中的ConcreteStatel,...ConcreteStateN。题目所设置的填空,主要集中在状态转换上。因此解答该题时,要求在理解状态模式内涵的基础上,依据纸巾售卖机的状态转换原则,给出正确的状态设置。
空(1)出现在类TissueMachine的数据成员定义部分。状态模式封装了状态的转换过程,但是它需要枚举可能的状态,因此需要实现确定状态种类。因此在类TissueMachine中需定义出所有可能的状态对象。根据所给出的对象名称及说明中的描述,可知(1)处应填入的类名为State。
空(2)~(5)要求填写类TissueMachine中的方法setState在不同调用处的实际参数。这里的一个难点在于题目中没有显示地给出方法setState的原型及语义,这要求考生根据面向对象程序设计风格及说明中给出的应用场合来推断setState的内涵及原型,主要是确定其参数列表。
在面向对象程序设计中,为了做到封装,通常都会把数据成员定义为私有的。私有的数据成员对象不能直接访问,因此在类中都会提供2组访问私有数据成员的方法,分别为get…方法和set…方法(…代表对应的数据成员名称)。get…方法表示获取私有数据成员的值,其返回值类型为对应的数据成员的类型;set…方法表示对数据成员进行赋值,所要赋的值通常通过参数传递进去,方法的返回值类型通常为void。根据面向对象程序设计的这些特点,以及状态模式的内涵及应用场合,可以推断出setState方法的功能就是设置纸巾售卖机的当前状态。纸巾售卖机在任一时刻只能处于一个唯一的状态,由状态模式可知,纸巾售卖机的状态都是用状态对象表示的,由此就可以确定出,setState方法的参数只要一个就可以了,就是表示纸巾售卖机下一状态的状态对象。
经过以上分析之后,可以明确空(2)~(5)空所填的内容都应与状态转换相关。因此要填充这些空,只要对照图5-1的状态转换图,根据状态转换的条件确定出当前状态及下一状态即可。
空(2)出现在方法insertQuarter内,即给纸巾售卖机投入2元钱。根据状态图,“投入2元钱”之后,售卖机应转换到“有2元钱”的状态。“有2元钱”对应的状态的类为“HasQuarterState”,所以空(2)处应填写类HasQuarterState的对象。由此得出(2)应填tissueMachine. getHasQuarterState()。
同理,空(3)表示的状态是从“有2元钱”状态,经历“退回2元钱”事件之后的状态,及“没有投币”状态。所以空(3)处应填tis sueMachine. getNoQuarterState()。
空(4)和(5)处分别表示卖出一包纸巾之后,售卖机应该转换到的下一个状态。这个跟售卖机中的纸巾数有关,如果还有纸巾,则转换到“没有投币”状态,如果没有纸巾了,则转换到“纸巾售完”状态,因此,空(4)处应填tissueMachine. getNoQuarterState(),空(5)处应填tissueMachine.getSoldOutState()。
转载请注明原文地址:https://www.kaotiyun.com/show/2eDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
与设计测试用例无关的文档是______。A.项目开发计划B.需求规格说明书C.设计说明书D.源程序
若计算机中地址总线的宽度为24位,则最多允许直接访问主存储器(6)________________的物理空间(以字节为单位编址)。
下图是①设计模式的类图,该设计模式的目的是②,图中,Abstraction和RefinedAbstraction之间是③关系,Abstraction和Implementor之间是④关系。②处应填入?
缺陷探测率DDP是衡量一个公司测试工作效率的软件质量成本的指标。在某公司开发一个软件产品的过程中,开发人员自行发现并修正的缺陷数量为80个,测试人员A发现的缺陷数量为50个,测试人员B发现的缺陷数为50个,测试人员A和测试人员B发现的缺陷不重复,客户反馈缺
针对程序段:IP(A||B||C)THENW=W/X,对于(A,B,C)的取值,(57)测试用例能够满足MCDC(修正条件逻辑判定)的要求。
在软件开发过程中,常采用图形表示相关的信息,(28)不用于表示软件模块的执行过程。
在软件评审中,设计质量是指设计的规格说明书符合用户的要求。设计质量的评审内容不包括______。
以下不属于在需求分析阶段编写的文档是
阅读以下说明,回答问题1~6。[说明]某公司已有一个100用户的有线局域网。由于业务的发展,现有的网络不能满足需求,需要增加40个用户的网络连接,并在公司客户接待室连接网络以满足合作伙伴实时咨询的需求。现结合公司的实际情况组建无线局域网,具体拓扑
网络设计流程通常由以下五个阶段组成:A.确定网络物理结构B.确定网络逻辑结构C.对现有网络的体系结构进行分析D.安装和维护E.需求分析根据网络开发设计的过程,给出上述五个阶段的先后排序:(1)。Ca
随机试题
在抽样调查研究中,当样本含量逐渐增大时
子宫内膜异位症患者行保留卵巢功能手术的适合年龄为:
对生活在交通不便、经济落后、广播电视覆盖率较低的山区农村居民通过广播电视来宣传“亿万农民健康促进行动”,这种传播策略不符合选择传播媒介的
大面积皮肤剥脱伤需浅表小伤口需
在技术咨询合同中,委托人签订合同的主要目的是就特定项目寻求(),(),()等,而咨询机构所完成的任务也是向委托人提供可选择的建议。
职业病是指企业、事业单位和个体经济组织的劳动者在职业活动中,因接触()而引起的疾病。
拟办是指()。
Itwassaidthattwothousand______hundredstudentsattendedthemeeting.
(2014年真题)下列选项中,属于渎职罪的是()。
下面程序main(){intx,y,m,n;x=5;y=8;m=++x,x;n=y+y++;printf("%d,%d,%d,%d",x,y,m,n);}运行后,x,y
最新回复
(
0
)