2011-04-20 70 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