试题详情

试题内容

阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。

采用状态(State)模式来实现该纸巾售卖机,得到如图5-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图5-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。

【C++代码】
#include
using namespace std;
// 以下为类的定义部分
class TissueMachine;   // 类的提前引用
class State {
public:
virtual void insertQuarter() = 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, *hasQuarterState,*soldState, *state ;
int count; //纸巾数
public:
TissueMachine(int numbers);
void setState(State* state);
State* getHasQuarterState();
State* getNoQuarterState();
State* getSoldState();
State* getSoldOutState();
int getCount();
// 其余代码省略
};
// 以下为类的实现部分
void NoQuarterState ::insertQuarter() {
tissueMachine->setState(  (2)  );
}
void HasQuarterState ::ejectQuarter() {
tissueMachine->setState(  (3)  );
}
void SoldState ::dispense() {
if(tissueMachine->getCount() > 0) {
tissueMachine->setState(  (4)  );
}
else {
tissueMachine->setState(  (5)  );
}
}  // 其余代码省略
查看答案

软题库参考答案:暂时没有答案(仅供参考)

软题库解析:正在加载....

你可能感兴趣的试题

4题:

试题四
阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。
【说明】
某机器上需要处理n个作业.job1,job2,…,jobn,其中:
(1)每个作jobi(1≤i≤n)的编号为i,jobi有一个收益值p[i]和最后期限值d[i]小
(2)机器在一个时刻只能处理一个作业,而且每个作业需要一个单位时间进行处理,一旦作业开始就不可中断,每个作业的最后期限值为单位时间的正整数倍;
(3)job1~jobn的收益值呈非递增顺序排列,即p[1)≥P[2]≥…[n):
(4)如果作业jobi在其期限之内完成,则获得收益9[i];如果在其期限之后完成,则没有收益。
为获得较高的收益,采用贪心策略求解在期限之内完成的作业序列。图4*1是基于贪心策略求解该问题的流程图。
(1)整型数组J[]有n个存储单元,变量k众表示在期限之内完成的作业J[1..k]存储所有能够在期限内完成的作业编号,数组J[1..k]里的作业按其最后期限非递减排序,即d[J[1]]≤…≤d[J[k]]。
(2)为了便
3题:

试题:3
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一个管理选民信息的软件系统。系统的基本需求描述如下:
(1)每个人(Person)可以是一个合法选民(Eligible)或者无效的选民(Ineligible)。
(2)每个合法选民必须通过该系统对其投票所在区域(即选区,Riding)进行注册( Registration)。每个合法选民仅能注册一个选区。
(3)选民所属选区由其居住地址(Address)决定。假设每个人只有一个地址,地址可以是镇(Town)或者城市(City)。
(4)某些选区可能包含多个镇;而某些较大的城市也可能包含多个选区。
现采用面向对象方法对该系统进行分析与设计,得到如图1-1所示的初始类图。


图1-1类图
<
2题:

试题二
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内
【说明】
某省针对每年举行的足球联赛,拟开发一套信息管理系统,以方便管理球队、球员、主教练、主裁判、比赛等信息。
(1)系统需要维护球队、球员、王教练需要维护球队、球员、主教练、主裁判、比赛等信息。
球队信息主要包括:球队编号、名称、成立时间、人数、主场地址、球队主教练
球员信息主要包括:姓名、身份证号、出生日期、身高、家庭住址。
 主教练信息主要包括:姓名、身份证号、出生日期、资格证书号、级别。
 主裁判信息王要包括:姓名、身份证号、出生日期、资格证书号、获取证书时间、级别。
 (2)每支球队有一名主教练和若干名球员。一名主教练只能受聘于一支球队,一名球员只能效力于一支球队。每支球队部有自己的唯一主场场地,且场地不能共用。
 (3)足球联赛采用王客场循环制,一周进行一轮比赛,一轮的所有比赛同时进行。
 (4)一场比赛有两支球队参
5题:阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
享元(flyweight)模式主要用于减少创建对象的数量,以降低内存占用,提高性能。现要开发一个网络围棋程序,允许多个玩家联机下棋。由于只有一台服务器,为节省内存空间,采用享元模式实现该程序,得到如图5-1所示的类图。


6题:

试题:6
阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图1-1所示。



图1-1 Command模式类图
【Java代码】
class Light {
public Light() {}
public Light(String name) { /* 代码省略 */ }
public void on()  { /* 代码省略 */ }    // 开灯
public void off()  { /* 代码省略 */ } &
2题:阅读下列说明,回答问题l至问题3,将解答填入答题纸的对应栏内。
【说明】
某服装销售公司拟开发一套服装采购管理系统,以便对服装采购和库存进行管理。
【需求分析】
(1)采购系统需要维护服装信息及服装在仓库中的存放情况。服装信息主要包括:服装编码、服装描述、服装类型、销售价格、尺码和面料,其中,服装类型为销售分类,服装按销售分类编码。仓库信息包括:仓库编码、仓库位置、仓库容量和库管员。系统记录库管员的库管员编码、姓名和级别。一个库管员可以管理多个仓库,每个仓库有一名库管员。一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。
(2)当库管员发现有一类或者多类服装缺货时,需要生成采购订单。一个采购订单可以包含多类服装。每类服装可由多个不同的供应商供应,但具有相同的服装编码。采购订单主要记录订单编码、订货日期和应到货日期,并详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。
(3)系统需记录每类服装的各个供应商信息和供应情况。供应商信息包括:供应商编码、供应商名称、地址、企业法人和联系电话。供应情况记录供应商所供应服