首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图10.35所示。 采用状态(State)
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图10.35所示。 采用状态(State)
admin
2018-07-25
71
问题
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图10.35所示。
采用状态(State)模式来实现该纸巾售卖机,得到如图10.36所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图10.35中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。
【C++代码】
#inClude<iostream>
using namespace std;
//以下为类的定义部分
class TissueMachine; //类的提前引用
C1ass State{
public:
virtual void insertQuarter()=0; //投币
virtual void ejectQuarter()=0; //退币
virtual void turnCrank()=0; //按下“出纸巾”按钮
virtusl void dispense()=0; //出纸巾
};
/*类SoidOutState、NoQuarterState、HasQuarterState、SoldState的定义省略,
每个类中均定义了私有数据成员TissueMachine*tissueMachine*/class TiSsueMachine{
private:
____(1)*soldOutState,*noQuarterState,*hasQuarterState,*soldstate,*state;
int count; //纸巾数
public:
TissueMachine(int number);
void setState(State*state);
State* qetHasQuarterState();
State* qetNoQuarterState();
State* qetSoldState();
State* getSoldOutState();
int getCount();
//其余代码省略
};
//以下为类的实现部分
void NoQuarterState::insertQuarter(){
tissueMachine->setState____(2);
}
void HasQuarterstate::ejectQuarter()(
tissueMachine->setState____(3);
}
void SoldState::dispense(){
if(tissueMachine->getC0unt()>0){
tissueMachine->setState____(4);
}
else{
tissueMachine->setState____(5);
}
}
//其余代码省略
选项
答案
(1)State (2)tissueMachine->getHasQuarterState0或new HasQuarterState() (3)tissueMachine->getNoQuarterState0或new NoQuanerState() (4)tissueMachine->getNoQuarterState0或new NoQuarterState() (5)tissueMachine->getSoldoutState()或new SoldOutState()
解析
空(1):根据题意,本题使用的是状态模式,判断纸巾售卖机的状态,根据不同的状态执行不同的动作。State定义了纸巾售卖机所对应的一些状态,如售出纸巾、纸巾售完等。类SoldOutState、NoQuarterState、HasQuarterState、SoldState均由类State派生而来。
空(2):void insertQuarter()定义了一个“投币”的方法,即在“没有投币”状态下,用户投币的方法。tissureMachine->setState是改变纸巾售卖机的状态,此时,用户已投入2元钱,故将此时的状态改为“有2元钱”的状态,纸巾售卖机调用“有2元钱”状态的方法即可。
空(3):void ejectQuarter()定义了一个“退币”的方法,即在“有2元钱”状态下,用户按下退币按钮,纸巾售卖机将此时的状态改为“没有投币”状态,故直接调用getNoQuarterState()即可。
空(4):根据纸巾售卖机状态图可知,当售出纸巾并且纸巾数量仍大于0时,将返回“没有投币”状态。同空(3)的分析,此处应调用getNoQuarterState()。
空(5):根据纸巾售卖机状态图可知,当售出纸巾并且纸巾数量等于0时,将返回“纸巾售完”状态。此处用了if…else…判断语句,当纸巾数量仍大于0时,返回“没有投币”状态,否则,纸巾数量一定等于0。空(5)处是else下的一条语句,故此处是判断count为0时纸巾售卖机的状态,显然应调用getSoldOutState()。
转载请注明原文地址:https://kaotiyun.com/show/G7DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
上述配置中是否有问题?请指出并说明理由。解释配置中画线部分内容含义?
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。在最理想和保守的估计中加速开发进度要着重抓的共同环节是哪些?请用50字以内的文字加以说明。
阅读以下交换机Switch01的部分配置信息,结合图2-8所示的网络拓扑图将(1)~(8)空缺处的内容(命令或解释)填写完整。Switch>enable(进入特权模式)S
阅读以下说明然后完成问题1、问题2、问题3、问题4,把答案填入相应的对应栏内。[说明]如图10-1是Cisco1900交换机划分为两个vain拓扑图,把E0/10划分为vlan2,把E0/20划分为vlan3。[*]
阅读以下说明,回答问题1、问题2、问题3、问题4和问题5,将解答填入对应栏内。[说明]无源光网络(PON),是指在OLT(光线路终端)和ONU(光网络单元)之间的光分配网络(ODN)没有任何有源电子设备。PON(无源光网络)技术是一种一点对
请问无线局域网的工作模式有哪几种?平时所用的手机可漫游在不同的基站之间,WLAN工作站也可漫游,请问WLAN的“漫游”含义是什么?
请问无线局域网的工作模式有哪几种?当不使用AP时,必须把一组需要互相通信的无线网卡的什么值设为相同?
请用蒙特卡罗错误随机植入模型估算出被测程序模块中将会遗留下多少个未被发现的隐藏错误。请简要列出计算式子及计算过程。信息部门的吴总工程师向谢工程师建议了另一种测试方案作为“错误随机植入”测试方法的补充。即由A和B两组测试人员同时相互独立地测试同一份宽带路
由于面向3G移动电话的电子商务网站看不到用户进行销售服务,因此,对用户身份进行认证是必要。通常,在Internet中进行电子签名的认证过程如下:①文件的发送者将要发送的文件生成(1);②用发送者的(2)对摘要加密后,将其添加到文件中;
随机试题
电阻对焊工艺参数有________、____、____、____和____。
企业持有至到期投资对其进行质量分析中不必关注的分析内容是
A.亮氨酸B.色氨酸C.赖氨酸D.蛋氨酸E.苏氨酸
以下局部急救处理冲洗溶液中,最适宜处理皮肤接触铬酸的是()
下列对项目管理目标责任书内容的认识,正确的有()。
除临时离职或因正当原因暂时不能工作的以外,会计人员在离职时都应办理交接手续。()
Weareconfidentthattheenvironment______byourfurthereffortstoreducepollution.
下图为美国农业带划分图,请在答题卡上写出图中字母所代表的农业带名称。A__________;B__________;C__________;D__________;E__________。
在面向对象的方法中,(44)是状态和操作(或方法)的封装体,(45)是所有对象的共同行为和不同状态的集合体,方法在类定义中使用(46)来定义,当一个操作被调用时,由(47)带来将被执行的这个操作的详细内容。
Purefeldsparisacolorless,transparentmineral,butimpuritiescommonlymakeitopaqueandcolorful.
最新回复
(
0
)