序列圖描述對象間隨時間的消息交互。本文聚焦 UML 規定的兩種形態——**通用形態**(Generic,描述「必須」交互)與**實例形態**(Instance,描述「可能」交互),並詳細演示條件、for/while 循環在通用序列圖中的建模表示。
| 維度 | 通用形態 | 實例形態 |
|---|---|---|
| 交互類型 | 必須 (must) 發生 | 可能 (may) 發生 |
| 橫軸框內容 | 類名(匿名對象,任意實例均可參與) | 變量名:類名(具體實例) |
| 結構元素 | 含條件、循環、分支、成功/失敗路徑 | 單一消息序列,無控制結構 |
| 適用階段 | 設計階段,接近代碼;整個用例多方案建模 | 分析階段,單一具體方案建模 |

例:銀行存款業務,存款額必須為正數。Java 代碼:
public void receiveDeposit(Account account, BigDecimal deposit) {
if (deposit.compareTo(BigDecimal.ZERO) > 0) account.credit(deposit);
else throw new ImproperDepositException();
}
分析階段:消息箭頭上方標註守衛條件 [deposit > 0],方括號包裹,置於消息名左側。

設計階段:條件可細化至代碼片段級(如 deposit.compareTo(BigDecimal.ZERO) > 0)。語義規定:條件為真時才發送消息。else 分支另畫箭頭,守衛條件取反([deposit <= 0]),目標為異常對象。

for (int i=0; i<4; i++) squareRoom.examineCorner(i);
消息名前加 * 表示迭代。若次數固定已知,*[4];多數情況次數動態,僅標 *。

while (value.notFound()) value = database.search(key);
結合條件與迭代:*[value.notFound()]。罕見固定次數(偽裝 for 循環除外)。
