首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

UML 類圖中表達 C++ 派生類構造函數與基類初始化列表

     編輯:程式設計綜合問答

問題背景

在 UML 類圖中如何表示 C++ 派生類構造函數調用基類構造函數並初始化基類成員的情況?例如:

Teacher(string name, int age, string department, string teacherNumber)
    : Person(name, age)  // 基類初始化列表
{
    // 派生類成員初始化
}

UML 標準表示法

1. 操作(Operation)標記法

在類圖的操作區塊中,構造函數以類名命名,參數列表包含所有參數,基類初始化通常不直接在簽名中顯示。標準寫法:

+ Teacher(name: String, age: Integer, department: String, teacherNumber: String)

2. 使用註記 (Note) 補充細節

若需表達基類初始化邏輯,可附加註記:

note right of Teacher::Teacher
  呼叫 Person(name, age) 初始化基類成員
  初始化 department, teacherNumber
end note

3. 活動圖/循序圖展示流程

更適合用循序圖展示物件建構時序:

participant "Client" as C
participant "Teacher" as T
participant "Person" as P

C -> T: new Teacher("張三", 30, "CS", "T001")
activate T
T -> P: Person("張三", 30)
activate P
P --> T: 基類初始化完成
deactivate P
T -> T: 初始化 department, teacherNumber
T --> C: 物件建構完成
deactivate T

實務建議

  1. 類圖保持簡潔:僅顯示公開介面(簽名),內部實現細節(如基類初始化)不宜在類圖中硬編碼。
  2. 重要協作關係用註記:若基類初始化涉及關鍵業務規則或非同步操作,用附加註記說明。
  3. 代碼即文檔:UML 圖用於溝通架構設計,細節以代碼為準。過度詳盡的類圖維護成本高,易與代碼脫節。
  4. 工具支援:Enterprise Architect、Visual Paradigm 等工具可從代碼反向生成類圖,構造函數會自動顯示參數,但基類初始化列表通常不呈現。

你的寫法評析

+Teacher(name : string ,age : int ,department : string ,teacherNumber : string ):Person(name,age)

優點:嘗試表達基類初始化。
缺點:非標準 UML 語法;參數型別寫法不統一(string vs String);冒號後接基類調用易混淆為回傳型別。

改良版本

+ Teacher(name: String, age: Integer, department: String, teacherNumber: String)

配合類圖中的泛化關係(實線空心三角箭頭指向 Person),閱讀者即可理解繼承結構。基類初始化屬於實作細節,置於代碼或循序圖更合適。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved