首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明SDC++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图16.6所示。 采用状态(State)
阅读下列说明SDC++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动售出2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图16.6所示。 采用状态(State)
admin
2014-11-13
67
问题
阅读下列说明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
软件设计师下午应用技术考试
软考中级
相关试题推荐
[Java源程序:一个简单的Web服务器]/************************************************************//*WebServer.java*//******
在应用服务器关机的情况下,公司员工能连接上因特网吗?简要解释。公司内部的电话、传真机与ISDN的连接情况如图9-3所示。将图中(1)和(2)处空缺的设备名称填写在答题纸相应位置。
阅读以下说明,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明]A公司用1台Web服务器和1台应用服务器来管理销售信息。销售人员在办公室时通过PC机来访问应用服务器,若在公司以外,则通过具有数据显示功能的移动电话或PDA(Perso
双绞线可以制作成直连线和交叉线两种形式。在上图中,两个交换机的UPLINK口相连,使用的双绞线制作成什么形式?连接交换机和计算机的双绞线制作成什么形式?阅读下面的配置信息,解释(6)处的命令。Switeh#vlanSwitch(vla
阅读以下说明,回答问题1至问题5。[说明]某企业采用Windows2000操作系统部署企业虚拟专用网(VPN),将企业的两个异地网络通过公共Internet安全地互联起来。微软Windows2000操作系统当中对IPSec具备完善的支持,下图
该DHCP服务器可分配的IP地址有多少个?在Windows操作系统下,DHCP客户端“Internet协议(TCP/IP)属性”配置界面如下图所示。在此界面中,客户端应如何配置?
根据图3-1所给出的网络连接方式及相关的网络参数,区域(A)与区域(B)中计算机的网络参数配置(如图3-2所示)为:区域(A)计算机“IP地址”(范围):(1):区域(A)计算机“子网掩码”;(2);区域(A)计算机“默认网关”:(
网络设计流程通常由以下五个阶段组成:A.确定网络物理结构B.确定网络逻辑结构C.对现有网络的体系结构进行分析D.安装和维护E.需求分析根据网络开发设计的过程,给出上述五个阶段的先后排序:(1)。有线
网络设计流程通常由以下五个阶段组成:A.确定网络物理结构B.确定网络逻辑结构C.对现有网络的体系结构进行分析D.安装和维护E.需求分析根据网络开发设计的过程,给出上述五个阶段的先后排序:(1)。将答
阅读以下关于Linux网关安装和配置过程的说明,回答问题1至问题5。【说明】当局域网中存在大量计算机时,根据业务的不同,可以将网络分成几个相对独立的子网。图12-2是某公司子网划分的示意图,整个网络被均分为销售部和技术部两个子网,子网之间通过一台
随机试题
奶牛在饲养过程中患病后可滥用抗菌素,这不会造成奶的污染。()
简述赠与合同的特征。
混凝土浇筑完成后应及时进行养护,养护方法错误的是()。
应当建立备查账进行核算的是()。
按照规定,要约不得撤销的情形有()。
信用违约互换(CDS)是一种金融衍生产品,CDS的买方在合约期限内或在信用事件发生前定期向CDS的卖方就某个参照实体的信用事件支付费用,从而当违约事件发生时,可以获得一定数量的赔付,从而构成了对CDS买方的一种保护。然而,一些研究却发现在债券市场上,那些资
下列哪种情形应当受到追诉期限的限制?()
设X与Y独立且X~N(0,1),Y~N(1,1),则
Listeningoutforwhalesongisonewaythatshipscanavoidcollidingwithwhales.Butwhatdoyoudoifthewhalesaren’tsing
OnDialectalTVProgramsThereismuchdiscussiontodayaboutwhethereconomicgrowthisdesirable.Atanearlierperiod,ou
最新回复
(
0
)