2011-04-20 34 views
2

在状态模式中,这是如何建模的?具有不同警戒状态的状态转换

状态A到上触发X和conditon C1状态B时当前状态是A

状态A到状态C的触发X和条件C2时当前状态是A

这是怎么通常实现的呢?我可能需要执行很多警戒条件。

回答

0

这是非常标准的例子, this example

[编辑在基础这不是功课!]

假设我的理解对不对:

  • 你有一个事件(X),它可以触发
  • 选择哪些过渡到两个可能的转换一个根据哪种条件成立火情(C1C2

如果这是使用警戒条件的标准情况。语法是:

  • X[C1]作为过渡A-> B的标签,和
  • 上的过渡A- X[C2]>℃。

C1 & C2必须评估为布尔值,因此可以根据您的评论替换var==2。即标签将变成X[var==2]X[var==3]

因为它在语义上是正确的,C1 & C2必须在状态A中互斥 - 否则你有非确定性。

hth。

+0

没有功课。我想知道是否我有不同的警戒条件下使用的相同变量,如果我应该使条件成为触发器的一部分,使它们成为不同的触发器,或者如果它可以将它作为相同的触发器进行建模,例如if (var == 2)条件C1和另一个如果var == 3条件C2 – user716129 2011-04-20 19:35:27

+0

谢谢,清除了。在一个相关的说明---如果我有多个触发器A,B导致两个状态S1和S2之间的转换,是否会造成任何问题?我在网上查看了一些状态图,没有看到任何导致两个州之间转换的多个事件......我应该将这个问题变成另一个问题吗? – user716129 2011-04-26 13:51:36

+0

我会单独询问q。不能马上想到它为什么会导致问题,但正如你所说,不是(m)那里的任何例子。可能值得看看UML规范... – sfinnie 2011-04-26 16:20:54