首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在绘制状态机图中挣扎

在绘制状态机图中挣扎
EN

Stack Overflow用户
提问于 2017-06-19 10:51:57
回答 1查看 784关注 0票数 1

嘿,在这里,我试图为这个场景绘制状态机图,但是它缺少很多信息。如果这里有人能帮忙的话。

情景

  1. 游客将从使用自动售票系统(ATS)选择旅行开始。
  2. 自动售票系统(ATS)将显示行程详情。
  3. 这趟旅行的细节将包括座位号码和目的地。
  4. 根据提供的旅行详细信息,ATS将计算付款。
  5. 游客可以选择用现金或信用卡付款。
  6. 如果游客输入了错误的现金,ATS将在屏幕上显示“插入更多现金”信息,直到插入正确的金额为止。
  7. 如果游客选择卡付款,ATS将执行两项并行任务。它将验证卡的有效期并检查信用卡余额。如果信用卡被接受,银行将授权支付,并将更新游客的帐户。但是,如果信用卡不被接受或无效,ATS将再次要求游客提供付款选项(返回到步骤5)。
  8. 付款完成后,票证和收据由ATS打印。
  9. 现金支付可能会导致一些变化,因此这一变化也是由ATS发放的。游客将得到机票和零钱。
  10. ATS将在事务结束时显示消息“事务完成”。

我的画:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 20:15:51

好吧,我试着给你一些提示。状态机总是为单个类创建的,而不是正在考虑的整个系统。因此,让我们假设ATS是一个单独的类(实际上,它可能更多地是由几个类组成的组件)。现在安非他明类兴奋剂在一开始将是闲置的。当选择旅行时,会以某种方式触发它。然后,它必须完成旅行的细节。它等待付款,最后它会吐出一张票。现在(基本上!)状态机如下所示:

这是一个脚手架,是在没有阅读上面的细节的情况下完成的。请注意,您可以使用来自可中断区域的一般异常来代替cancel转换,这将最终清除支付。在实践中,您可能会这样做,因为取消应该(从用户的角度)在任何时候都是可能的。当然,抽出时间也是可能的(如果已经支付了一些现金怎么办?)

另外,我没有包括do/entry/exit操作。对于现金,这将是类似于add new cash sum,所以我们知道什么时候支付了足够的钱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44628613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档