【问题标题】:Difference between event and guard uml modeling事件和守卫 uml 建模之间的区别
【发布时间】:2015-02-17 19:08:09
【问题描述】:

我并没有真正看到状态图中的守卫和事件之间的区别,我可以看到事件是已启动的动作或类似的东西,而守卫只是一个条件,但我认为这比我不知道这两个术语是关联还是分离,哪个是必要的,哪个是可选的,或者它们的语法之间存在差异更深刻;一个事件是没有括号写的,如果你能帮助我,那就太好了。

提前致谢。 [对不起,如果我拼错了什么]

【问题讨论】:

    标签: uml state-diagram


    【解决方案1】:

    事件是已经启动的动作什么的

    关闭。事件只是已经发生的事情。就像火车到达车站,打开电灯开关,或者(根据季节)圣诞老人从烟囱里冒出来。

    守卫只是一个条件

    没错。因此,对于触发状态转换,事件必须发生并且守卫必须评估为真。因此,转换到“离开礼物”状态需要圣诞老人到达(事件)和烟囱畅通(守卫)。

    哪个是必要的,哪个是可选的

    基本上每个过渡都需要一个事件。它不需要守卫。因此,当开关打开时,灯可以转变为“照明”状态。无需防护。

    事件不带括号

    是的。事件没有括号,守卫(如果有的话)放在方括号中。所以

    Santa Arrives [chimney unblocked]
    

    Hth.

    【讨论】:

    • 这么多指南解释了什么是有效的UML,什么是无效的UML,我们在这里寻找表达式的目的和意义,而不是它们的有效性。感谢这个惊人的答案。
    【解决方案2】:

    在状态图中,事件是导致状态之间转换的原因。举个简单的例子,门有两种状态,打开和关闭。 ReadIDCard 是将当前状态从 Closed 转换为 Open 的事件。

    一个警戒条件决定接收对象是否应该响应事件。例如,['AuthorizedID'] 守卫将在将状态更改为 Open 之前检查卡 ID 是否已授权。如果没有守卫条件,ReadIDCard 会一直开门。

    为了进一步说明,当门的状态变为打开时,定时器事件(例如,在等待五秒后)将门的状态再次更改为关闭。在这种情况下,没有警戒条件;站在门口的人都会被压扁。 :)

    所以,条款是不同的。总会有某种事件导致从一种状态转换到另一种状态。保护条件是可选的。从图表的角度来看,是否添加事件和保护条件是可选的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多