未分类题

某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。
中级软件设计师,历年真题,2011年下半年(下午)《软件设计师》真题
采用状态(State)模式来实现该纸巾售卖机,得到如图6-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图6-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。
中级软件设计师,历年真题,2011年下半年(下午)《软件设计师》真题
【Java代码】
import java.util.*;
interface State{
public void insertQuarter(  );//投币
public void ejectQuarter(  );//退币
public void turnCrank(  );//按下“出纸巾”按钮
public void dispense(  );//出纸巾
}
class TissueMachine{
(1)soldOutState,noQuarterState,hasQuarterState,soldState,state;
state=soldOutState;
int count=0;//纸巾数
public TissueMachine(int numbers){/*实现代码省略*/}
public State getHasQuarterState(  ){return hasQuarterState;}
public State getNoQuarterState(  ){return noQuarterState;}
public State getSoldState(  ){return soldState;}
public State getSoldOutState(  ){return soldOutState;}
public int getCount(  ){return count;}
//其余代码省略
}
class NoQuarterState implements State{
TissueMachine tissueMachine;
public void insertQuarter(  ){
tissueMachine.setState((2));
}
//构造方法以及其余代码省略
}
class HasQuarterState implements State{
TissueMachine tissueMachine;
public void ejectQuarter(  ){
tissueMachine.setState((3));
}
//构造方法以及其余代码省略
}
class SoldState implements State{
TissueMachine tissueMachine;
public void dispense(  ){
if(tissueMachine.getCount(  )>0){
tissueMachine.setState((4));
}else{
tissueMachine.setState((5));}
}
}

【参考答案】

(1)State
(2)tissueMachine.getHasQuarterState()
(3)ti......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

未分类题
某物流公司为了整合上游供应商与下游客户,缩短物流过程,降低产品库存,需要构建一个信息系统以方便管理其业务运作活动。【需求分析结果】(1)物流公司包含若干部门,部门信息包括部门号、部门名称、经理、电话和邮箱。一个部门可以有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名经理,只需负责管理本部门的事务和人员。(2)员工信息包括员工号、姓名、职位、电话号码和工资;其中,职位包括:经理、业务员等。业务员根据托运申请负责安排承运货物事宜,例如:装货时间、到达时间等。一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号,其中,客户号唯一标识客户信息的每一个元组。每当客户要进行货物托运时,先要提出货物托运申请。托运申请信息包括申请号、客户号、货物名称、数量、运费、出发地、目的地。其中,一个申请号对应唯一的一个托运申请;一个客户可以有多个货物托运申请,但一个托运申请对应唯一的一个客户号。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图2-1所示。【关系模式设计】部门(部门号,部门名称,经理,电话,邮箱)员工(员工号,姓名,职位,电话号码,工资,(a))客户((b),单位名称,通信地址,所属省份,联系人,联系电话,银行账号)托运申请((c),货物名称,数量,运费,出发地,目的地)安排承运((d),装货时间,到达时间,业务员)【问题1】(5分)根据问题描述,补充四个联系、联系的类型,以及实体与子实体的联系,完善图2-1所示的实体联系图。【问题2】(8分)根据实体联系图,将关系模式中的空(a)~(d)补充完整。分别指出部门、员工和安排承运关系模式的主键和外键。【问题3】(2分)若系统新增需求描述如下:为了数据库信息的安全性,公司要求对数据库操作设置权限管理功能,当员工登录系统时,系统需要检查员工的权限。权限的设置人是部门经理。为满足上述需要,应如何修改(或补充)图2-1所示的实体联系图,请给出修改后的实体联系图和关系模式。