[VS2010/.NET 4.0 自我修煉] 初探 Visual Studio 2010 Ultimate 內建的 UML 工具
首先,感謝點部落團隊舉辦贈書自我修練活動,
讓筆者有機會看書自我學習以及分享所得~
以下正式開始這次的修練之路~~~
在 Visual Studio 中有一套協助開發的工具叫做「類別圖表」,
如果筆者沒記錯,這是從 2008 版本開始內建在 VS 裡的。
但是 2008 的版本只有單純的類別圖檢視。
而這次在 2010 的版本中,「類別圖表」大大的提升了對 UML 的支援度,
不僅可建立類別圖 (Class Diagram),還可建立最常使用的其他四種圖:
- 使用案例圖 (Use Case Diagram)
- 活動圖 (Activity Diagram)
- 順序圖 (Sequence Diagram)
- 元件圖 (Component Diagram)
本篇以下僅先針對類別圖做簡單的使用介紹,
示範內容包括如何透過類別圖表來做類別的新增、繼承設定以及類別成員的細節設計,
以下開始示範:
一、新增類別
1. 在 VS 裡面開一個新的類別庫專案
2. 在專案項目上面點滑鼠右鍵,選擇「類別圖表檢視」, VS 會自動加入一個文件叫做「ClassDiagram1.cd」,
並且開啟設計檢視畫面
3. 在設計檢視畫面的空白處點擊滑鼠右鍵,選擇「加入」,可看到右邊出現次選單,
可新增的項目有「類別」、「列舉」、「介面」、「抽象類別」、「結構」、「委派」、「註解」等七項,
4. 因為接下來要介紹繼承的操作方式,所以我們選擇「類別」,建立新類別以供「繼承」的操作範例使用。
選擇了類別之後,可以看到類別基本資訊的設定視窗,具有「類別名稱」、「存取 (修飾詞)」、「檔名」等項目可編輯。
首先來看「類別名稱」文字方塊,我們可在這邊指定新增類別的名稱
5. 接著是「存取修飾詞」下拉選單,這邊包含了三種修飾詞,public、internal 以及預設
6. 最後是設定這個類別要新增在哪個 .cs 檔案中,
這邊提供了有兩個方式給我們選擇,
其一是「建立新檔案」,也就是在專案中新增一個 .cs 檔案,檔案命名會以第 4 步所指定的名稱為準
其二是「加入至現有檔案」,也就是選擇一個專案中既有的 .cs 檔案,將新的類別加在該檔案中
二、繼承
1. 接下來是前面提到的「繼承」的操作範例,
首先在 VS 左側可以看到「工具箱」裡面的「類別設計工具」,
點開來並點擊滑鼠左鍵選取「繼承」
2. 選取了「繼承」項目之後,將滑鼠游標移回到「類別圖表設計檢視」之中,可以看到滑鼠的游標改變了
3. 如果我們在這邊想讓類別 Class2 繼承類別 Class1,那就先將滑鼠游標移到類別 Class2 項目上面並點一下滑鼠左鍵,
這時候可以看到滑鼠游標的尖端部分跟類別 Class2 項目之間連著一條虛線
4. 然後將滑鼠游標移到類別 Class1 項目上面再點一下滑鼠左鍵,
可以看到兩個項目之間會用一條單向箭頭的直線連接起來,
其中父類別 (Class1) 那邊是箭頭,子類別 (Class2) 那邊沒有箭頭,
像這樣的圖形是從 UML 2.0 的規範而來~~~
我們這時再將類別 Class2 打開來看,VS 果然已經編輯過其內容,
使類別 Class2 繼承類別 Calss1 了~~~
三、類別細節
A. 屬性
1. 在 VS 的上方有一排按鈕叫做「類別設計工具」,
其中有一個按鈕叫做「類別細節視窗」,我們可以利用它來設計類別成員
2. 開啟「類別細節視窗」之後,我們首先來加幾個屬性看看,
將滑鼠游標移到圖片所在位置點一下左鍵,就會進入編輯模式,
在這個文字方塊可以輸入屬性名稱~
3. 我們在上一動將屬性名稱編輯為「ID」,這時候可以按 tab 鍵繼續編輯「型別」這個文字方塊。
文字游標移到「型別」文字方塊之後,VS 會自動將型別設定為 int,而修飾詞則為 public
4. 很貼心的是,VS 在「型別」這個文字方塊中也提供了 Intellisense,
而且會將完整的型別名稱補上去~
5. 接著是「存取 (修飾詞)」,在這邊是以下拉選單的方式來呈現,
有 public、private、internal、protected、protected internal、預設等六個項目可選擇
6. 接著是「摘要」,這邊比較特殊一點,是以另開視窗的方式來提供編輯,
點一下「摘要」文字方塊右側的「…」按鈕即可開啟編輯視窗
7. 最後是「隱藏」核取方塊,這個的作用很簡單,只是可以挑選要在設計檢視中看到哪些屬性,
被隱藏的就看不到囉~~~
8. 筆者在類別 Class1 跟類別 Class2 中各加了兩個屬性,ID 以及 Name,類別細節看起來會像下列這樣
9. 屬性的設定操作方式就介紹到此,這時候類別 Class1 跟類別 Class2 的 .cs 檔內容會是這個樣子,
我們可以看到每個屬性的 getter 都需要手動去 implement,
也就是不會自動使用下列的寫法:
public Guid ID
{
get;
set;
}
B. 欄位
1. 「欄位」的設計方式與屬性幾乎是一模一樣,因此不再多做介紹,
其中唯一不同的地方是「欄位」的「存取 (修飾詞)」預設為 private,
這是因為「封裝」裡的「資訊隱藏」概念……
C. 方法
1. 「方法」的編輯方式與上述兩種成員的方式大同小異,
其中「型別」代表的是方法的回傳值,預設會是 void,
而「存取 (修飾詞)」預設是 public
2. 這個時候,類別 Class1 跟類別 Class2 的內容會像下列這樣,
可以看到「方法」一樣是需要 implement 的~~~
四、總結
印象中有人用這套來作正反向工程,
等到修練篇數滿了之後再來試作看看~~~
備註:工具終究只是工具,
最重要的還是要了解他背後的理論基礎,
才不會淪為小精靈一族~~~~~~ XDDD