阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某种出售罐装饮料的自动售货机(Vending MaChine)的工作过程描述如下:(1)顾客选择所需购买的饮料及数量。(2)顾客从投币口向自动售货机中投入硬币(该自动售货机只接收硬币)。硬币器收集投入的硬币并计算其对应的价值。如果所投入的硬币足够购买所需数量的这种饮料且饮料数量足够,则推出饮料,计算找零,顾客取走饮料和找回的硬币;如果投入的硬币不够或者所选购的饮料数量不足,则提示用户继续投入硬币或重新选择饮料及数量。(3)一次购买结束之后,将硬币器中的硬币移走(清空硬币器),等待下一次交易。自动售货机还设有一个退币按钮,用于退还顾客所投入的硬币。已经成功购买饮料的钱是不会被退回的。

现采用面向对象方法分析和设计该自动售货机的软件系统,得到如图3.1所示的用例图,其中,用例“购买饮料"的用例规约描述如下。参与者:顾客。主要事件流:1.顾客选择需要购买的饮料和数量,投入硬币:2.自动售货机检查顾客是否投入足够的硬币;3.自动售货机检查饮料储存仓中所选购的饮料是否足够:4.自动售货机推出饮料;5.自动售货机返回找零。备选事件流:2a.若投入的硬币不足,则给出提示并退回到1;3a.若所选购的饮料数量不足,则给出提示并退回到1。根据用例“购买饮料”得到自动售货机的4个状态:“空闲”状态、“准备服务”状态、“可购买”状态以及“饮料出售”状态,对应的状态图如图3-2所示。所设计的类图如图3-3所示。
问答题
根据说明中的描述,使用说明中的术语,给出图3-2中的S1~S4所对应的状态名。
【正确答案】正确答案:S1:空闲 S2:准备服务 S3:饮料出售 S4:可购买
【答案解析】解析:题目说明中已经给出了自动售货机的4个状态分别是:“空闲”状态、“准备服务”状态、“可购买”状态以及“饮料出售”状态。解答本题需要根据用例规约推出这4个状态之间的迁移关系,这样才能与图3-2中的状态S1~S4对应。 首先从状态图的初始状态“●”开始,S1代表的就是自动售货机的初始状态。在上述4个状态中,只有在“空闲”下,才能开始一次售卖,所以S1对应的是“空闲”状态。 根据S2相关的事件来看,在该状态时,自动售货机在接收顾客的请求(顾客选择的饮料以及投入的硬币),因此应对应“准备服务”状态。 状态S3有一个自迁移事件“计算找零”,根据说明和用例规约可知,饮料出售之后进行找零,所以S3对应“饮料出售”状态。S4则对应“可购买”状态。
问答题
根据说明中的描述,使用说明中的术语,给出图3-2中E1~E4所对应的事件名称。
【正确答案】正确答案:E1:所选购的饮料数量不足 E2:选择饮料【硬币足够购买饮料】 E3:所选购的饮料数量足够/推出饮料 E4:取走饮料/找零并清空硬币器
【答案解析】解析:确定了状态图中的各个状态,接下来就需要进行状态之间迁移事件的获取。E2是从“准备服务”状态变换到“可购买”状态的事件,“选择饮料[硬币不足】”时仍然停留在“准备服务”状态,对应用例规约中的2a;根据用例规约若硬币足够则进入下一步,所以E2所对应的事件是“选择饮料【硬币足够购买饮料】”。 E1事件的触发将使得自动售货机从“可购买”状态变换到“准备服务”状态,对应用例规约中的3a,所以E1对应的事件应是“所选购的饮料数量不足”。 E3事件的触发将使得自动售货机从“可购买”状态迁移到“饮料出售”状态。根据说明,能够售出饮料必须满足两个条件:该饮料数量足够以及顾客投入的硬币足够。硬币是否足够以及饮料数量不足在状态S2已经进行了判断,因此E3对应的事件应是“所选购的饮料数量足够/推出饮料”。 E4对应的事件是自动售货机完成一次售卖,回到“空闲”状态时需处理的事件,根据说明可知,E4对应的事件应是“取走饮料/找零并清空硬币器”。
问答题
根据说明中的描述,使用说明中的术语,给出图3.3中C1~C5所对应的类名。
【正确答案】正确答案:C1:自动售货机 C2:硬币器 C3:饮料存储仓 C4:硬币 C5:饮料 或者 C1:自动售货机 C2:饮料存储仓 C3:硬币器 C4:饮料 C5:硬币
【答案解析】解析:本题要求根据说明和用例规约创建对应的类模型。根据说明和用例规约可知自动售货机有几个重要的组成元素:饮料、硬币、硬币器和饮料存储仓。1台自动售货机有1个硬币器、1个饮料存储仓;硬币器可以接收多枚硬币,饮料存储仓中可以容纳多种饮料。由此可知,图3.3中的两个0..*聚集关系应该分别对应“硬币器.硬币”和“饮料存储仓.饮料”这两对“部分-整体”关系;而C1就是自动售货机。