面向对象程序分析与设计-作业

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

用例“购买饮料”的用例规约描述如下。

参与者:顾客。

主事件流:

1.顾客选择需要购买的饮料和数量,投入硬币;2.自动售货机检查顾客是否投入足够的硬币,如果硬币不够,则转2a; 3.自动售货机检查饮料存储仓中所选购的饮料是否足够,如果满足顾客要求,则转第4步,否则转3a; 4.自动售货机推出饮料;5.自动售货机返回找零。6. 一次购买结束之后,将硬币器中的硬币移走(清空硬币器),等待下一次交易。 扩展事件流: 2a.若投入的硬币不足,则给出提示并退回到1; 3a.若所选购的饮料数量不足,则给出提示并退回到1 。 根据用例“购买饮料”得到自动售货机的4个状态:“空闲”状态、“准备服务”状态、“可购买”状态以及“饮料出售”状态。

要求:面向对象方法学对自动售货机系统进行分析与设计,分别完成以下工作:(1) 给出自动售货机系统所涉及的类,并给出类图。(2) 给出用例“购买饮料”的顺序图。(3) 给出对象—-自动售货机的状态图。(4) 给出用例“购买饮料”的活动图。

(1)给出自动售货机系统所涉及的类,并给出类图

首先在Rational Rose软件中创建类 右键Logical View 选择new->Class 编辑类名

根据题目要求编辑如下类

接下来创建类图 右键logical View 选择new-> Class Diagram 创建完类图后打开 并将类拖入类图

接着进行关联设置 为了方便可以先在菜单中添加这两种连接线 其中aggregation代表有聚合关系

双击菜单栏进行设置

绘制出如下类图

编辑关联关系多样性 右键单击连接端 选择关系

类图编辑完成

(2) 给出用例“购买饮料”的顺序图

创建用例图模型 并打开

从菜单中选择对应的图形 并进行命名

双击进入购买饮料的用例

添加顺序图 再次点击打开顺序图

根据菜单工具 绘制出如下顺序图 双击线段即可添加描述

(3)给出对象—-自动售货机的状态图

创建状态图 在logical View中选择Statechart diagram 并打开

利用菜单工具绘制如下图

其中部分设置如下

(4)给出用例“购买饮料”的活动图

创建活动图 确定顾客 和 自动售货系统 两个对象 并添加泳道

根据菜单 绘制出如下活动图

其中需注意这里的是由这个图标组建的 关键线段的描述跟上述方法相同