首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图10.35所示。 采用状态(State)
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图10.35所示。 采用状态(State)
admin
2018-07-25
52
问题
阅读下列说明和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://www.kaotiyun.com/show/G7DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
上述配置中是否有问题?请指出并说明理由。解释配置中画线部分内容含义?
ISDN分哪几层?NT2(网络终端连接设备)提供哪两种交换功能?如果ISDN收费是按每分钟计算,假如0.5元/分钟,采用ISDN基本速率接口下载1024k的文件需要付费多少?
从下列的2道试题(试题5、试题6)中任选1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。请认真阅读下列有关于路由器配置的技术说明,根据要求回答问题1至问题5。【说明】菜地市级水电站网络除了和远程子网172.20.0.0/24
在由L2TP构建的VPN中,主要由(1)和(2)两种类型的服务器构成。1.将图2-7中(1)和(2)处空缺名称填写在相应位置。2.简要说明两种服务器的主要作用。某路由器(在图2-7中没有标出)的部分配置信息如下所示,请解释其中注明部分的
如何根据网络流量选择联网设备,给出所选设备的作用。在我国,目前可供选择大的用户选择的接入方式有哪些,各自的接入速率为多少?
阅读以下关于RIP动态路由配置的技术说明,结合网络拓扑图回答问题1至问题3。[说明]某大学城局域网的网络拓扑结构如图7-18所示,图中路由器R1、R2,R3均运行基于距离矢量算法的RIP路由协议,并且图中给出了路由器R1、R2、R3各端口的IP地
阅读以下基于Linux操作系统部署DHCP服务的技术说明,根据要求回答问题1至问题3。【说明】某地市图书馆内部局域网划分为办公区、电子阅览室、无线阅览室等3个VLAN,并通过一台带防火墙模块的路由器与Internet网互连。为了便于整个局域网IP
为了便于用户下载相关资料,特安装一台FTP服务器,其服务器端软件是Serv-U,假如要增加一个名为CIU10009的用户,对应目录为D盘,且要求加密,在图6-4中怎么设置?为了保证FTP服务器的数据安全,每个在读取文件时,只能读取和执行相关文件,请问在
在图8-12所示的拓扑结构中的代理服务器上依次单击“开始→程序→管理工具→路由与远程访问,并在系统弹出的界面中打开“IP路由选择”目录树,然后用鼠标右键单击“NAT/基本防火墙”,选择[新增接口]命令。接着若选择接口1的“本地连接”,最后进行如图8-13所
随机试题
产前检查应常规每周1次抽羊水细胞作染色体检查
液体制剂与固体制剂相比较具有的优点是()。
患者,女,29岁。甲状腺大部切除后,出现严重且不能恢复的手足抽搐,首选的治疗措施是
下列经济业务中,能够使企业资产总额减少的是()。
报检单上填写的HS编码应与当年海关公布的商品税则中的编码一致。()
利用个人客户的资产负债表可以明确()。
某农牧区由于长期滥垦草原、超载放牧,不仅没有改变经济落后的面貌.反而导致自然环境的严重破坏,草原承载力急剧下降。践行科学发展观以来,农牧民改变以往的经济发展方式,根据当地自然条件种植沙柳资源林,大力发展沙柳加工业,不仅促进了经济发展.也保护了生态环境。农牧
【2014年四川绵阳.判断】教师对职业道德理论上的认识、情感上的共鸣是职业道德修养的最终目的。()
作为自由外汇的根本特征是硬通货。()
A、Hethinkschildrencanbesatisfiedeasily.B、Hethinksthepublishersshouldn’tproducesomanyjunkbooks.C、Hethinkswear
最新回复
(
0
)