概念: 事件與信號
事件是指一件重大情事的詳細說明,有時間與空間的觀念。信號是一種事件,代表兩個事例之間非同步刺激因素的詳細說明。
關係
主要說明

簡介

在現實生活中,許多事物經常同步發生且無法預期。「發生的事物」就稱為「事件」。

在狀態機的理論中,事件模擬刺激因素的出現,可能觸發狀態轉移。事件包括信號、呼叫、時間進程或狀態變更。事件可能同步或非同步發生。

「信號」是一種事件,代表兩個事例之間非同步刺激因素的詳細說明。

事件類型

事件可能發生在外部或內部。外部事件是指在系統和參與者之間傳遞的事件。內部事件是指存在系統內的各個物件之間傳遞的事件。有四種事件:信號、呼叫、時間進程及狀態變更。

信號

信號代表由一個物件非同步地分派(擲出)再由另一個物件接收(擷取)的物件。異常狀況就算是一種信號。

信號可能有實例,但通常不會明確表現這些實例。信號可能涉入一般化關係,從而形成事件的階層。

信號可能有屬性和操作。信號的屬性充當信號的參數。

狀態機的狀態轉移或互動中傳送訊息的動作,皆可能導致傳送信號。執行操作也可能傳送信號。在建立類別或介面的模型時,指定元素行為的重點在於指定可供操作傳送的信號。在操作及其可傳送的事件之間,兩者的關係以相依關係來模擬,模板化以 <<send>> 表示。

呼叫事件

正如同信號事件代表出現信號一樣,呼叫事件代表分派操作。不論何者,事件都可能在狀態機內觸發狀態轉移。

信號是非同步事件,但呼叫事件通常有同步特性。這表示當物件在另一個物件上呼叫操作時,控制權會從傳送端移轉至接收端,等到操作完成時,控制權才迴歸傳送端。呼叫事件和信號事件的視覺化建模方式相同。不論何者,事件都連同參數一起出現,顯示為狀態轉移的觸發事件。

雖然從外觀上無法區別信號事件和呼叫事件,但差異會在接收端類別上浮現,因為此類別會宣告處理呼叫事件的操作。以信號而言,狀態機內會發生由信號觸發的轉換現象。

時間與變更事件

時間事件代表時間進程。時間事件會以一般時鐘機制來同步化系統中有關時間的部份。變更事件代表系統狀態發生變化或滿足某些條件。

傳送與接收事件

信號事件和呼叫事件至少會牽涉到兩個物件:傳送端與接收端。信號送出之後,傳送端會分派信號,然後就繼續執行本身的控制流程,不會枯等接收端回覆。這與操作呼叫的語意完全不同,其中,傳送端會等待接收端回覆之後,才繼續執行控制流程。因此,通常以操作來表示「阻擋」行為(阻擋或防止其他事物發生的行為),而以信號來表示非阻擋行為。

一個物件傳送一個信號給一群物件的動作稱為「多重播送」,外觀上以一個信號傳送至一個含有一群接收端的儲存器來表示。廣播是指一個信號傳送給系統中所有物件的動作,外觀上以一個信號傳送給一個物件來表示,此物件代表整個系統;此「系統物件」進一步實現訊息分送機制,確保信號傳送至系統中所有適當的物件。