【说明】某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。
【说明】
某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。
某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。
参考解析
解析:?试题分析??? 本题考查基本面向对象设计模式的运用能力。
??? 状态设计模式主要是能够使一个对象的内在状态改变时允许改变其行为,使这个对象看起来像是改变了其类。由类图可知类State是类SoldState、SoldOutState、NoQuarterState和HasQuarterState分的父类,它抽象了这四个类的共有属性和行为。在使用中,无论是这四个类中那个类的对象,都可被当作State对象来使用。
??? 而根据题目的描述,我们可以知道一个纸巾售卖机它由4种状态,分别是售出纸巾、纸巾售完、没有投币、有2元钱。
??? 在本题中,根据程序我们不难知道第(1)空是要定义5个对象指针,而这些对象指针都应该属于State类型,因此第一空答案为State。
??? 而第(2)在类NoQuarterState(没有投币)的insertQuarter()函数中,而这个函数是投币函数,在该函数中,使用了tissueMachine类的setState方法,该方法是设置纸巾售卖机的当前状态,根据题目给出的纸巾售卖机状态图,我们可以知道,从没有投币状态,经过投币后,应该转换到有2元钱状态。而setState方法的参数是一个State的对象,因此第(2)空应该是一个有2元钱对象,而这里我们可以新创建一个该对象,也可以通过tissueMachine类的getHasQuarterState方法来获得这样一个对象,所以第(2)空答案应该是“tissueMachine->getHasQuarterState()”或“new HasQuarterState”。
??? 而第(3)在类HasQuarterState(有2元钱)的ejectQuarter()函数中,而这个函数是退币函数,在该函数中,也使用了tissueMachine类的setState方法,该方法是设置纸巾售卖机的当前状态,根据题目给出的纸巾售卖机状态图,我们可以知道,从有2元钱状态,经过退币后,应该转换到没有投币状态。而setState方法的参数是一个State的对象,因此第(3)空应该是一个没有投币对象,而这里我们可以新创建一个该对象,也可以通过tissueMachine类的getNoQuarterState方法来获得这样一个对象,所以第(3)空答案应该是“tissueMachine-> getNoQuarterState()”或“new NoQuarterState”。
??? 而同样的道理,我们可以知道第(4)空的答案是“tissueMachine->getNoQuarterState()”或“new NoQuarterState”。第(5)空的答案是“tissueMachine->getSoldOutState()”或“new SoldOutState”。?参考答案:(1)State
(2)tissueMachine->getHasQuarterState()
(3)tissueMachine->getNoQuarterState()
(4)tissueMachine->getNoQuarterState()
(5)tissueMachine->getSoldOutState()?
??? 状态设计模式主要是能够使一个对象的内在状态改变时允许改变其行为,使这个对象看起来像是改变了其类。由类图可知类State是类SoldState、SoldOutState、NoQuarterState和HasQuarterState分的父类,它抽象了这四个类的共有属性和行为。在使用中,无论是这四个类中那个类的对象,都可被当作State对象来使用。
??? 而根据题目的描述,我们可以知道一个纸巾售卖机它由4种状态,分别是售出纸巾、纸巾售完、没有投币、有2元钱。
??? 在本题中,根据程序我们不难知道第(1)空是要定义5个对象指针,而这些对象指针都应该属于State类型,因此第一空答案为State。
??? 而第(2)在类NoQuarterState(没有投币)的insertQuarter()函数中,而这个函数是投币函数,在该函数中,使用了tissueMachine类的setState方法,该方法是设置纸巾售卖机的当前状态,根据题目给出的纸巾售卖机状态图,我们可以知道,从没有投币状态,经过投币后,应该转换到有2元钱状态。而setState方法的参数是一个State的对象,因此第(2)空应该是一个有2元钱对象,而这里我们可以新创建一个该对象,也可以通过tissueMachine类的getHasQuarterState方法来获得这样一个对象,所以第(2)空答案应该是“tissueMachine->getHasQuarterState()”或“new HasQuarterState”。
??? 而第(3)在类HasQuarterState(有2元钱)的ejectQuarter()函数中,而这个函数是退币函数,在该函数中,也使用了tissueMachine类的setState方法,该方法是设置纸巾售卖机的当前状态,根据题目给出的纸巾售卖机状态图,我们可以知道,从有2元钱状态,经过退币后,应该转换到没有投币状态。而setState方法的参数是一个State的对象,因此第(3)空应该是一个没有投币对象,而这里我们可以新创建一个该对象,也可以通过tissueMachine类的getNoQuarterState方法来获得这样一个对象,所以第(3)空答案应该是“tissueMachine-> getNoQuarterState()”或“new NoQuarterState”。
??? 而同样的道理,我们可以知道第(4)空的答案是“tissueMachine->getNoQuarterState()”或“new NoQuarterState”。第(5)空的答案是“tissueMachine->getSoldOutState()”或“new SoldOutState”。?参考答案:(1)State
(2)tissueMachine->getHasQuarterState()
(3)tissueMachine->getNoQuarterState()
(4)tissueMachine->getNoQuarterState()
(5)tissueMachine->getSoldOutState()?
相关考题:
地质“三书”是指() A、采区地质说明书、回采工作面地质说明书、掘进工作面地质说明书B、采区设备说明书、顶板结构说明书、底板岩性说明书C、地质构造说明书、顶板结构说明书、底板岩性说明书D、煤层地质说明书、顶板岩性说明书、底板岩性说明书
符合数据说明顺序规范的是( )。 A. 全程量说明、局部量说明、类型说明、常量说明B. 全程量说明、局部量说明、常量说明、类型说明C. 类型说明、常量说明、全程量说明、局部量说明D. 常量说明、类型说明、全程量说明、局部量说明
EXPRESS语言通过一系列的说明来进行描述,这些说明主要包括()。 A.类型说明(Type)B.实体说明(Entity)C.规则说明(Rule)D.函数说明(Function)E.材料说明(Materials)
EXPRESS语言通过一系列的说明来进行描述,这些说明主要包括()。A、类型说明(Type)B、实体说明(Entity)C、规则说明(Rule)D、函数说明(Function)E、材料说明(Materials)
一个完整的pascal 程序由程序首部,说明部分及执行部分组成,其说明部分的次序为()A、常量说明,类型说明,变量说明,标号说明,过程说明B、标号说明,类型说明,变量说明,常量说明,过程说明C、标号说明,常量说明,类型说明,变量说明,过程说明D、类型说明,变量说明,标号说明,过程说明,常量说明
单选题一个完整的pascal 程序由程序首部,说明部分及执行部分组成,其说明部分的次序为()A常量说明,类型说明,变量说明,标号说明,过程说明B标号说明,类型说明,变量说明,常量说明,过程说明C标号说明,常量说明,类型说明,变量说明,过程说明D类型说明,变量说明,标号说明,过程说明,常量说明
多选题EXPRESS语言通过一系列的说明来进行描述,这些说明主要包括()。A类型说明(Type)B实体说明(Entity)C规则说明(Rule)D函数说明(Function)E材料说明(Materials)
多选题会计专业文书常用的说明方法有()A定义说明B比较说明C数字说明D图表说明E举例说明