首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

UML 建模實戰第二彈:序列圖中的條件邏輯與循環建模

     編輯:Java 相關知識

序列圖描述對象間隨時間的消息交互。本文聚焦 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 循環

for (int i=0; i<4; i++) squareRoom.examineCorner(i);

消息名前加 * 表示迭代。若次數固定已知,*[4];多數情況次數動態,僅標 *。

while 循環

while (value.notFound()) value = database.search(key);

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

核心啟示

  • 必須 vs 可能 是 UML 與軟件工程基石:用例捕捉「必須」,方案捕捉「可能」;類圖捕捉「必須」,實例圖捕捉「可能」。
  • 序列圖與 Java 語法**近乎同構**,開發者直覺極強。早期掌握條件/循環建模,後續複雜圖表(do-while、嵌套分支等)將水到渠成。
  • 圖表上下文決定當前視圖是「必須」還是「可能」,靈活切換兩種形態是建模成熟度的標誌。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved