【用VS2010動手學UML第17回】快速上手UML類別圖的高級 ...
文章推薦指數: 80 %
在UML官方認證的分類中,類別圖中的樣版(Template)屬於高級認證的考試 ... 一般在編寫程式的實作上,樣版的編碼同樣是屬於比較高階且難懂的,不過 ...
移至主內容
文/邱郁惠
|
2010-07-23發表
在UML官方認證的分類中,「樣版」(Template)屬於高級認證的考試主題,也就是說,它是屬於比較少用且難懂的概念。
一般在編寫程式的實作上,樣版的編碼同樣是屬於比較高階且難懂的,不過懂得使用樣版的開發者,可能會覺得樣版很好用,因為可以少掉一些因為型別不同而造成的重工吧!
簡單來說,樣版透過設定「參數」(Parameter)的方式,讓開發人員可以藉由繫結(Bind)不同的參數值,產生不同的繫結元素。
這樣說起來有點抽象,本來就不是很容易懂得的概念,就更難以理解了。
所以,偷懶一點,我們直接來看一個範例,或許就會比較容易理解。
圖1學員清單
假設,在報名系統中,我們有一個「學員清單」(StudentList)類別,就是用來保存某一班學員的清單,我們主要設計了兩個操作,分別為:新增學員和移除學員,如圖1所示。
接著,我們又發現需要一個課程清單,但是其實課程清單跟學員清單做的事情一模一樣,只是要加入到清單中的元素不一樣;課程清單加入課程,而學員清單加入學員。
當然,我們要怎麼處理上述的情況,以便獲取一些開發彈性、節省一點開發成本,方法一定有很多種啦。
比方說,我們可以透過設計一個名為「清單」(List)的樣版類別,然後把要加入到清單的元素設為參數,如圖2所示。
圖2樣版類別
在VS2010/UML的操作上,直接新增一個類別,然後設定類別性質表中的「樣版參數」(TemplateParameters),就會出現雙矩形的樣版圖示了,如圖3、圖4所示。
圖3樣版參數
圖4樣版參數的性質表
請仔細看到圖4的樣版參數性質表中,除了參數名稱外,主要得設定參數種類。
一般如果是以我們自訂的類別、介面、列舉型別做為參數的話,那參數種類就要選擇相對應的類別、介面、列舉型別。
如果是指定特定的數值的話,就要選擇字串、整數、布林。
再者,也可以指定特定的操作和性質(Property),性質包含屬性和結合。
圖5約束型別不見了
此外,在圖4的樣版參數性質表中還有一個「約束型別」(ConstraintedType),它主要搭配類別和介面參數種類使用。
比方說,如果我們選擇「字串」(String)做為參數種類時,約束型別的欄位就會消失不見,正如圖5所示。
約束型別用來限制參數的類別,通常沒有指定,代表未設限。
但是,如果有需要的話,我們也是可以指定特殊的類別。
比方說,我們可以指定「訪客」做為約束型別,如圖6所示。
一旦,我們設定訪客做為約束型別之後,就只能繫結訪客類別或者它底下的子類別,譬如此處的學員。
圖6約束型別
不過,樣版類別是不能直接誕生個體的,因為我們還沒有指定參數值給它。
所以,接下來我們可以設計兩個「繫結類別」(BoundClass),分別將學員和課程做為樣版參數的實值,繫結原先的清單樣版,如圖7所示。
如此一來,在編譯(compile)時,編譯器就會以學員或課程替代掉原先的元素。
圖7樣版類別與繫結類別
在VS2010/UML的操作上,同樣先新增一個類別,然後在類別性質表的「樣版繫結」(TemplateBinding)欄位,指定我們打算繫結的樣版—清單,然後再指定學員做為「元素」樣版參數的實值,如圖8所示。
圖8樣版繫結
對了,如果剛才我們有設定「訪客」做為約束型別的話,此處的清單樣版就不能夠繫結「課程」了,因為課程不是訪客的子類別。
類別圖的價值
如果,再額外加上一項重要性的評比的話,我會覺得類別圖比其他圖都要來的重要些。
類別圖之所以重要,主要在於它可以提供下列重要的價值:
●整個系統共用的靜態結構:類別圖最有價值之處,主要是因為它提供了一個整體的靜態架構,讓整個系統可以共用。
為了共用,所以必須夠穩定、必須夠彈性、必須夠好用等等,而這些都會讓它的重要性提高,也同時讓它的價值性提高。
●支援各式用例和物件互動:用例代表著使用者具體的期望,這些都靠著穩定的類別結構在底下支撐著。
●抽象化問題領域中的事物:類別圖反映了問題領域中重要的事物,抽象得好,系統將容易開發並維護。
●兼具程式結構和資料結構:開發者會依照類別圖的內容來實作程式結構和資料結構。
因此,類別圖設計不佳,將直接影響系統實體。
專欄作者
邱郁惠
研究UML/OOAD十餘年,創辦UMLBlog(www.umltw.com)推廣UML,出版多本UML/OOAD專業書籍,擁有OCUP/UML三級認證、PMP、ITIL、OOAD認證。
專職於企業內訓、專案輔導、自辦課程、專欄寫作。
熱門新聞
微軟Azure技術長認為應以Rust代替C/C++開發專案
2022-09-20
Chrome與Edge中的拼字檢查功能可能外洩用戶密碼
2022-09-19
Uber疑似被駭,內部多項系統遭取得權限
2022-09-19
以太坊合併後,GPU挖礦已幾乎無利可圖
2022-09-19
全家史上最大規模POS改造,不只砸上億導混合雲,雙模式三大設計一機通吃大小店種和戶外擺攤
2022-09-15
Windows11即將支援逾2萬種Android程式
2022-09-21
【資安週報】2022年9月12日到9月16日
2022-09-18
星巴克22萬新加坡顧客資料遭駭客公開兜售
2022-09-19
Advertisement
2022iThome鐵人賽
專題報導
iThome2022資安大調查(下)
iThome2022資安大調查(上)
【iThome2022CIO大調查(下)】各產業數位轉型加速,IT大步邁向雲原生
分散式RAID躍居主流儲存應用
【iThome2022CIO大調查(中)】企業IT新戰力
更多專題報導
延伸文章資訊
- 1UML · 系統與概念筆記
活動圖用來描述在進行一項活動時,兩個或是多個類別物件之間程序的控制流程。 活動圖能夠用來描述在商業單元階層的高階商業程序,也可以用來描述低階內部類別的行為。 以 ...
- 2【用VS2010動手學UML第17回】快速上手UML類別圖的高級 ...
在UML官方認證的分類中,類別圖中的樣版(Template)屬於高級認證的考試 ... 一般在編寫程式的實作上,樣版的編碼同樣是屬於比較高階且難懂的,不過 ...
- 3多功能數位運動知識庫的塑模-以棒球為例44
析,隨後利用低至高階UML 型態圖的逐序塑模,最後能衍生新且符合. 更多使用者需求的資料。 ... 二)類別圖(Class diagram):傳統的物件導向分析與設計都會以.
- 4[Design Patterns] 高階和低階之分| 小朱® 的技術隨手寫 - - 點部落
具體類別用於實作層次。 當抽象與具體實作都分開之後,整個物件的架構圖就很明確了,接下來就要解決兩個問題 ...
- 5建立類別圖 - IBM
類別圖不僅是系統結構的圖形表示法(與物件模型圖類似),也是建構性的。 Rational Rhapsody 程式碼產生器會直接將於類別圖中建模的元素及關係轉換到許多高階語言的原始碼 ...