序列圖表現各參與者之間為完成某個行為而發生的交互及其時間順序,序列圖中的交互通過消息實現。消息是從一條生命線到另一條生命線的通信,它們通常是水平或傾斜向下的箭頭,從發送方生命線離開,到達接收方生命線。如果需要,在這些消息中可以傳遞參數值,但要注意確保參數類型與參數值與接收生命線角色所定義的操作相匹配。
-
同步消息及其返回消息
帶有實心箭頭的實線表示同步消息。發送方生命線向接收方生命線發送同步消息,然后發送方等待返回。同步消息的返回消息使用帶有V形箭頭的虛線表示,它由接收方生命線指向發送方生命線。
通常同步消息通過發送方調用接收方的操作來實現。圖 1展示了同步消息的發送及返回過程。
發送方向接收方發送同步消息后需要等待返回結果,但這并不意味著發送方必然被阻止發送或接收其他消息,UML序列圖允許非阻塞的同步行為。建模者務必明白,序列圖中的參與者不是實例而是角色,因而發送方可能有多個部分或包含線程,而當前等待可能只是阻塞其中的一個。
如果發送的同步消息已經可以明確其返回消息的信息,或者在當前所表達的行為中不需要特意表達返回消息時,在序列圖中可以省略返回消息的描畫。
如果建模的是一個概念性的序列圖,那么同步消息僅僅意味著發送者確保接收者收到了消息。否則,它表示發送者正在調用接收者的一個操作,并且發送者將等待響應。消息名稱放置在箭頭上方,并遵循接收者定義的操作語法。被調用的操作必須是接收者“操作”的成員,或者是從接收者的超類中繼承而來的。操作的參數可以根據場景給出適當的值。
-
異步消息
帶有V形箭頭的實現表示異步消息。發送異步消息時,發送方不會等待回復。而接收方必須是一個活動類,異步消息可以是硬件或軟件中斷。大多數基于Web的交互都是從瀏覽器到服務器的異步消息,隨后是另一個方向的異步消息。
異步消息可以是異步方式調用的操作(許多編程語言提供了異步操作定義機制),也可以是發送的信號。由于無法回復,異步消息不可以有返回值或輸出參數。圖 2展示一個喚醒信號(Wakeup),信號只能有輸入參數,可以將這些參數列在信號的獨立分隔欄中。在圖 2中,喚醒信號的參數是message:String。信號也可以在狀態圖和活動圖中展示。
圖 3則展示了一個系統類。它是一個活動類(可選地通過雙豎線邊框表示)。在其單獨分隔的“接收(RECEPTIONS)”欄中,展示該類可以接收的信號,形式上它類似操作的格式。在圖 3中展示了喚醒(Wakeup)信號。
在序列圖中使用信號的示例如圖 4所示,生命線Lifeline1向System發送了一條異步消息,該消息為上述所定義的信號Wakeup。異步消息必須是接收者“接收”的成員,或者從接收者的超類中繼承而來。
如果建模的是一個概念性的序列圖,那么異步消息僅僅意味著發送者不等待響應。
此外,接收者類必須是一個活動類,盡管一些建模者在建模時并不會特意將接收者使用表示“活動”的表示符號(即雙豎線邊框)。
-
自消息
自消息表示來自參與者自身的消息,可能是發送給其獨立的內部部分或線程。自消息從一條生命線上發出并到達同一生命線。自消息可以是同步或異步的,建模時可以像同步消息或異步消息那樣通過箭頭類型進行區分。對于同步的自消息還可能存在類似同步消息的虛線返回箭頭。
圖 5所示的序列圖在Lifeline1上展示了同步自消息,在Lifeline2上展示了異步自消息。
UML – 光頭顏說IThttps://gtyan.com/archives/category/uml
UML之序列圖的參與者與生命線-CSDN博客
UML之擴展用例_將這兩個用例擴展語議,擴展為“用例實現”-CSDN博客
UML之包含用例_一個包含第三方調用的用例圖-CSDN博客
UML之泛化用例_用例圖泛化-CSDN博客
UML之參與者(Actor)_uml actor-CSDN博客
UML之發現用例-CSDN博客
UML之泛化、特化和繼承_uml中泛化-CSDN博客
UML之組合與聚合_uml聚合和組合-CSDN博客
UML之關聯_uml 關聯 包含 連線-CSDN博客
UML之集合類型-CSDN博客
UML之屬性與參數的多重性_類圖多重性-CSDN博客
UML之模型、包及包的版型(構造型)_包體系結構-CSDN博客
UML之包的導入與訪問_uml的包使用-CSDN博客
UML之類型_在uml中,日期屬于什么類型-CSDN博客
UML之修飾符_圖框架標題類型之謬-CSDN博客
UML之類與類圖-CSDN博客
UML之圖框架標題類型之謬_框架標題是什么-CSDN博客