2023年05月29日来源:信管网 作者:cnitpm
软件设计师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4
往期软件设计师每日一练试题汇总:www.cnitpm.com/class/27/e4_1.html
软件设计师案例分析每日一练试题(2023/5/28)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2023/5/28
点击查看:更多软件设计师习题与指导
软件设计师案例分析每日一练试题内容(2023/5/28)
试题六
阅读下列说明和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 insertQuarter26; //投币
public void ejectQuarter26; //退币
public void turnCrank26; //按下“出纸巾”按钮
public void dispense26; //出纸巾
}
class TissueMachine {
(1) soldOutStater noQuarterState, hasQuarterState, soldState,state;
state - soldOutState;
int count=0; //纸巾数
public TissueMachine (int numbers) { /*实现代码省略*/}
public State getHasQuarterState26 { return hasQuarterState; }
public State getNoQuarterState26 { return noQuarterState; }
public State getSoldState26 { return soldState; }
public State getSoldOutState26 { return soldOutState; }
public int getCount26 { return count; }
//其余代码省略
}
class NoQuarterState implements State {
TissueMachine tissueMachine;
public void insertQuarter26 {
tissueMachine. setState( (1) );
}
//构造方法以及其余代码省略
}
class HasQuarterState implements State {
TissueMachine tissueMachine;
public void ejectQuarter26 {
tissueMachine.setState( (3) );
}
//构造方法以及其余代码省略
}
class SoldState implements State {
TissueMachine tissueMachine;
public void dispense26 {
if(tissueMachine .getCount26>0) {
tissueMachine.setState( (4) );
}else {
tissueMachine.setState( (5) ); }
}
}
信管网考友试题答案分享:
信管网试题答案与解析:www.cnitpm.com/st/2473320608.html
温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
相关推荐