摘錄於:http://www.kenming.idv.tw/source-code_with_uml_class_seq_diagram_relationship-02
基礎觀念導引 - 何謂靜態與動態?
靜態結構 (Static Structure)
- 表達軟體內部的結構設計。
- 一般指程式原始碼 (Source Code)。
- 軟體人員對資訊系統的設計契約 (Design Contract)。
靜態結構的設計契約
public class myclass { public void method_1() { //do something } public string method_2(string var) { //return a string return var; } }
誰來解讀設計契約?
- 一般指軟體資訊系統或應用軟體伺服器 (Application Server)。
- ie. 可以編譯 C#.NET 程式碼 (設計契約)並能在 .NET 平台上執行應用程式。
- 可以編譯 Java Spring 程式碼並能在支持 JEE (Java Enterprise Edition)平台執行完成編譯的應用程式。
動態相依 (Dynamic Dependency)
- 系統在執行某一特定功能時,所啟始不同的程序單元之間呼叫的一種動態相依關係。
- 一般指程式碼經過編譯後在執行期間 (run-time)的應用程式。
- 資訊系統履行軟體人員的設計契約,使之可以在其平台上執行。
靜態設計契約 vs. 動態物件間的相依關係
範例-靜態的程式碼設計契約
範例-動態物件間的相依關係
從物件導向角度來看待時
- 類別 (Class):Developer 對系統的設計契約。
- 物件 (Object):系統依據 Developer 的設計契約 (類別)在執行期間所產生的個體 (instance)。
推論-靜/動態 與 類別/物件的關係
- 靜態結構 = 類別設計 (Class Design)。
- 動態相依 = 物件之間的互動合作 (Object Collaboration)。
程式碼與 UML 設計圖之間的關聯性
從抽象的角度思考 類別(Class)/物件(Object) 的關係
- 物件是活的!
- 但是,類別可不是死的 (更不是活的);因為,它僅是對系統的設計契約而已。
問題思考!?
程式原始碼 (Source Code) 對應的是 UML 哪一張設計圖?
推導-1
程式碼 = 靜態結構 = 設計契約 = 類別設計
所以 程式碼 對應的是:UML 類別圖 (Class Diagram)。
Ex. 程式碼與類別圖的對應
範例-程式碼與類別圖的對應關係
使用 UML 類別圖 (Class Diagram)的好處
- 快速定義類別的結構 (包括類別名稱、屬性與行為)。
- 過濾程式碼實做的細節,容易聚焦於類別的責任分派 (responsibility assign)設計議題。
- 可以透過工具,將類別圖轉出至對應的程式碼 (反之亦然)骨架 (skeleton)。
類別圖無法作到 …
- 無法呈現系統執行期間 (run-time),程序單位之間的呼叫情形。
- 無法追蹤為完成某一特定功能案例,物件之間的動態相依呼叫關係。
- 無法掃瞄物件之間的動態連結,是否有違背類別圖的結構設計。
UML 循序圖的作用
- 循序 (sequence)圖與溝通(communication)圖均屬於物件合作 (collaboration)的呈現。
- 兩者僅在於呈現的方式不一樣。循序圖呈現的是從上而下循序的訊息傳遞;溝通圖呈現的是自由排列的訊息傳遞格式。
- 循序圖僅呈現某一特定的功能案例,一般稱之為劇本 (scenario)。為實現該案例,主要參與物件與物件之間的訊息 (message)互動描述。
Ex. 循序圖的範例呈現
推導-2
執行期間 (run-time)的應用程式 = 動態關連 = 物件合作
所以 編譯後的程式碼 在系統執行期間所呈現的物件互動,對應的是:
UML 合作(循序 or 溝通)圖 (Collaboration Diagram)。
繪製循序圖的重點
- 只表達值得關注的參與物件。
- 瞭解主要參與物件之間的訊息 (message)傳遞。
全站熱搜
留言列表