【发布时间】:2017-11-09 21:12:04
【问题描述】:
我正在尝试为以下问题开发 UML 状态机图:
自动售货机有 3 个按钮:R 代表“退钱”,A 和 B 代表饮料选择。 当自动售货机收到金额 x 的钱时,用户可以在饮料之间进行选择。按 R 不提供饮料就返还钱。
如果在插入任何钱之前按下按钮 - 机器会发出警报信号。 如果按下 A 或 B 并且 >= x 钱被插入 - 饮料将被送达。
服务完成后,会发出警报声通知用户。零钱被退回。取出饮料后,机器进入结束状态。
我的问题是我正在使用并行的“进程”,我相信必须有一个简单的配置来应对这种情况。有人可以提供/指导我正确的想法以优雅的方式解决这个问题吗?
编辑:在使用@Chris Reynolds 的建议后,我想出了这个:
【问题讨论】:
-
在状态机中,我相信气泡应该只是状态,您的示例感觉非常面向过程。我将只有三种状态:非活动、正在进行中的付款、准备服务。然后对于每个状态,您必须处理 4 个事件:按钮 A、B、R 和 Coin-Received。
-
一点,“如果在插入任何钱之前按下按钮 - 机器会产生警报信号”之后应该发生什么,因为您处于这种状态,我想某些事件应该停止警报没有?
-
另一点,在您的架构上,是否有事件?似乎除了最后两个之外,您的大多数转换都没有发生任何事件
-
最后,您的状态机中可能有什么并行的?用户一一操作没有?
-
granier:是的,我忘了实现关联 btw 警报信号和结束。我也不得不承认我完全误解了背后的整个想法。我使用了 Chris Reynolds 的建议来了,但现在附在我的编辑中。是这样的吗?
标签: uml diagram state-machine