信管网试题内容
信管网 导航

试卷名称:2011年下半年软件设计师考试下午真题试题(案例分析)

考试年份:2011年下半年

试题来源:《2011年下半年软件设计师考试下午真题试题(案例分析)》在线考试

试题内容

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

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

【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)  );  }
}
}
参考答案:暂时没有答案(仅供参考) 收藏

【解析】

普通会员无法查看试题解析。[开通试题解析服务]