首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。 采用状态(State)模式来实现
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。 采用状态(State)模式来实现
admin
2012-03-21
57
问题
阅读下列说明和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://kaotiyun.com/show/2eDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
统一过程(UP)是一种用例驱动的迭代式增量开发过程,每次迭代过程中主要的工作流包括捕获需求、分析、设计、实现和测试等。这种软件过程的用例图(Use Case Diagram)是通过(19)得到的。
某银行系统要求报表功能容易扩展,以便在需要的时候可以处理新的文件格式,.则该需求是()的。
网络杀毒软件厂商已经开始使用数据库技术和LDAP技术进行策略日志存储和用户管理,这里LDAP指的是______。A.轻量目录访问协议B.本地目录访问协议C.轻量数据访问协议D.本地数据访问协议
软件质量的定义是(42)。
以下关于建立良好的程序设计风格的叙述中,正确的是()。
下面关于编程语言的各种说法中,(6)是正确的。
错误管理的流程可以概括为:测试人员提交新的错误入库,错误状态为1,高级测试人员验证错误,如果确认是错误,分配给相应的开发人员,设置状态为2,如果不是错误,则拒绝,设置为“拒绝”状态:开发人员查询状态为3的错误,做如下处理:如果不是错误,则置状态为“拒绝”,
阅读以下说明,回答问题1至问题4,将解答填人答题纸的对应栏内。[说明]某小公司的网络拓扑如图9-2所示。其中路由器具有ISDN模块,公司网络通过ISDN连接到ISP。
如果防火墙采用.NAPT技术,则该单位至少需要申请(1)个可用的公网地址。1.ACL默认执行顺序是(5),在配置时要遵循(6)原则、最靠近受控对象原则、以及默认丢弃原则。(5)、(6)备选项(A)最大特权(B)最小特权(C)随机选取(D)自左到右
随机试题
股骨干骨折行钢板内固定,钢板应置于股骨的
《中国药典》规定,凡检查溶出度的制剂,可不再进行
背景 某机电工程共包含4个单位工程,分别由两个施工单位施工。4个单位工程中,有3个已经办理中间交接,另一个完成了系统水压试验,正在进行单体试运行。建设单位组织编写了联动试运行方案,建立了试运行组织。在此条件下,建设单位决定把那个单位卫程中未完成单体试运
在市场营销管理中,适宜采用维持市场营销的需求状况是()。
小组工作模式中与个案工作相似最多的是()。
中共中央于1935年12月17—25日召开的(),标志着党已经克服“左”倾冒险主义和关门主义,并不失时机地制定出抗日民族统一战线的新策略。
卡迭什战役
I’mhavingabitofanexistentialcrisis.Accordingtoanewresearch,ifI’manythingliketheaverageperson,aroundhalfthe
已知主函数中通过如下语句序列实现对函数模板swap的实例调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的描述中,会导致上述语句序列发生编译错误的是
Thesedays,peoplewhodo【C1】______workoftenreceivefarmoremoneythanpeoplewhoworkinoffices.Peoplewhoworkinoffices
最新回复
(
0
)