首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明SDC++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图16.6所示。 采用状态(State)
阅读下列说明SDC++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图16.6所示。 采用状态(State)
admin
2014-11-13
68
问题
阅读下列说明SDC++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图16.6所示。
采用状态(State)模式来实现该纸巾售卖机,得到如图16—7所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图16—4中纸巾售卖机的4中状态:售出纸巾、纸巾售完、没有投币、有2元钱。
【C++代码】
#include
USing namespace Std;
//以下为类的定义部分
Class TissueMachine; //类的提前引用
C1ass State{
publ iC:
virtual void insertQuar七er()=0; //投币
virtual void ejectQuarter()=0; //退币
virtual void turnCrank()=0; //按下“出纸巾”按钮
virtual void dispense()=0; //出纸巾
);
/*类SoldOutState、NoQuarterState、HasQuarterState、SoldState的定义省略,
每个类中均定义了私有数据成员TissueMachine*tissueMachine*/
ClasS TiSsueMachine(
private:
1*soldOutState,*noQuarterState,*hasQuartersta七e,*soldState,*state;
int count; //纸巾数
publ ic:
Ti S sueMachine(int number);
void setState(State*state);
State* getHasQuarterState();
State*getNoQuarterState();
State*getSoidState();
State*getS01dOurState();
int getCount();
//其余代码省略
};
//以下为类的实现部分
void NoQuarterState::inserQuarter()(
tissureMachine->setState(2) ;
}
void HasQuarterstate::ej ectQuarter(){
tissureMachine->setState(3) ;
}
void SoldState::dispense()(
i f(ti SsueMachine一>getCount()>0)(
tissureMachine->setState(4);
}
e1Se{
tissureMachine->setState(5);
}
}
//其余代码省略
选项
答案
(1)State (2)tissueMachine->getHasQuarterState0或new HasQuarterState (3)tissueMachine->getNoQuarterState0或new NoQuarterState (4)tissueMachine->getNoQuarterState0或new NoQuarterState (5)tissueMachine->getS0ldoutState()或new So|dOutState
解析
(1)根据题意,本题使用的是状态模式,判断纸巾售卖机的状态,根据不同的状态执行不同的动作。State定义了纸巾售卖机所对应的一些状态,售出纸巾、纸巾售完等状态。类SoldOutState、NoQuarterState、HasQuarterState、SoldState均有类State派生而来。
(2)void insertQuarter()定义了一个“投币”的方法:在没有“2元钱”时,客户投币的方法。tissureMachine.setState是改变纸巾售卖机的状态,此时,客户已投入2元钱,故将此时的状态改为“有2元钱”的状态,纸巾售卖机调用“有2元钱”状态的方法即可。
(3)void ejectQuarter0定义了一个“退币”的方法:在有2元钱的状态下,用户按下退币按钮,纸巾售卖机将此时的状态改为“没有投币”状态,故直接调用getNoQulnerState()即可。
(4)根据纸巾售卖机状态图可知,当售出纸巾,并且纸巾数量仍大于0时,将返回“没有投币”状态,同第(3)小题的分析,此处应调用getNoQuarterState0。
(5)根据纸巾售卖机状态图可知,当售出纸巾,并且纸巾数量等于0时,将返回“纸巾售完”状态,此处用了if…else…判断语句,当纸巾数量仍大于0时,返回“没有投币”状态,否则,纸巾数量一定等于0,本段程序第(5)空是else下的一条语句,故此处是判断count为0时,纸巾售卖机的状态,显然,应调用getSoldOutState0。
转载请注明原文地址:https://kaotiyun.com/show/k4DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在应用服务器关机的情况下,公司员工能连接上因特网吗?简要解释。公司内部的电话、传真机与ISDN的连接情况如图9-3所示。将图中(1)和(2)处空缺的设备名称填写在答题纸相应位置。
阅读以下说明,回答问题1至问题4,将解答填人答题纸的对应栏内。[说明]某小公司的网络拓扑如图9-2所示。其中路由器具有ISDN模块,公司网络通过ISDN连接到ISP。
造成故障1的原因是什么?如何解决?1.将故障2中(1)和(2)两处合适的答案填入答题纸相应的解答栏内。2.故障2如何解决?
同一个VLAN中的成员可以形成一个广播域,从而实现何种功能?将Switcbl的端口6划入v2的配置命令如下,请给出空白处的配置内容:Switch1(config)#interfacefastEthemet0/6(进入端口6配置模式)S
SSL协议使用(1)密钥体制进行密钥协商。在IIS5.0中,Web服务器管理员必须首先安装Web站点数字证书,然后Web服务器才能支持SSL会话,数字证书的格式遵循ITU-T(2)标准。通常情况下,数字证书需要由(3)颁发。如果Web服务器管理员希望W
双绞线可以制作成直连线和交叉线两种形式。在上图中,两个交换机的UPLINK口相连,使用的双绞线制作成什么形式?连接交换机和计算机的双绞线制作成什么形式?阅读下面的配置信息,解释(6)处的命令。Switeh#vlanSwitch(vla
请认真阅读下列有关计算机网络防火墙的说明信息,回答问题1~5。[说明]某单位的内部局域网通过防火墙与外部网络的连接方式及相关的网络参数如下图所示。
根据图3-1所给出的网络连接方式及相关的网络参数,区域(A)与区域(B)中计算机的网络参数配置(如图3-2所示)为:区域(A)计算机“IP地址”(范围):(1):区域(A)计算机“子网掩码”;(2);区域(A)计算机“默认网关”:(
网络设计流程通常由以下五个阶段组成:A.确定网络物理结构B.确定网络逻辑结构C.对现有网络的体系结构进行分析D.安装和维护E.需求分析根据网络开发设计的过程,给出上述五个阶段的先后排序:(1)。为上
随机试题
请解释今天的管理者面临的道德事项和社会责任事项。
结合实际,谈谈行政组织理论研究的意义。
在Excel扣,输入公式或函数时,其前导字符必须是____________。
下列函数在区间(-∞,+∞)上单调减少的是________.
苏联教育家沙塔洛夫提出的教学方法是【】
药品包装应具备的功能有()
关于食品添加剂管制,下列哪一说法符合《食品安全法》的规定?(2011年试卷一第28题)
所有与非典患者接触的人都被隔离了。所有被隔离的人都与小李接触过。如果以上命题是真的,以下哪个命题也是真的?
依据(12),声卡可以分为8位、16位和32位等。
•ReadthearticlebelowaboutcreditcardinAmerica,andthequestionsontheoppositepage.•Foreachquestion13--18,mark
最新回复
(
0
)