全站文章 iT邦幫忙
iThome Online提供免費電子報,現在就訂,最新IT訊息每日寄達。

iThome 每日新聞報
iThome 產品技術報
加入iThome Online會員,立即使用討論區、Blog等服務。

免費加入會員
登入 / 登出
管理會員帳號
忘記帳號密碼
聯絡客服
訂閱周刊
讀者服務
12' E政府專刊no.6(46)
12' 個資法專刊No2(45)
12' iTcloud No.2(44)
12' e政府專刊No.5(43)
12' 個資法專刊(42)
11' CIO專刊(41)
11' e教育專刊No.3 (40)
11' e政府專刊No.4 (39)
11'iTcloud專刊(38)
10' e教育專刊No.2 (37)
10'e政府專刊No.3 (36)
09'e政府專刊No.2 (35)
09'e教育專刊(34)
09'e政府專刊(33)
08'企業資安專刊-端點安全防護(32)
08'企業採購情報誌(31)
07'資訊安全技術應用專刊(30)
07' 新世代資料中心專刊(29)
07'企業資安技術應用專刊(28)
企業採購情報誌'06冬季號(27)
企業軟體技術應用專刊(25)
企業資安技術應用專刊(24)
UML類別圖的風格指南(上)
文/iThome (記者) 2009-03-02
分享到facebook
類別圖是UML中最重要的圖,也是最難設計的一款圖,59條類別圖風格指南,協助你清晰地畫出系統內部靜態結構。

我經常在說,如果要票選第一重要的UML圖的話,我一定會選類別圖。類別圖主要用來在表達系統內部的靜態結構,系統內部的靜態結構重大影響了日後系統是否能夠承受的起多元的變動,包括企業流程的變動、企業概念的變動、企業規則的變動、實體技術平臺的變動、資料庫的變動、程式語言的變動等等。

也因此,我個人認為類別圖是最難設計的好的一款圖,也是最需要花功夫學習和練習的一款圖,同時它也是UML圖中涵蓋最多概念的一款圖。關於類別圖的指南編號從87到145,共計有五十九條為原著書中所有章節之冠,分為六個小節:一般性指南、類別風格、關係、結合關係、繼承關係、聚合與組合關係。

一般性
類別圖適合用來表達各層面的靜態結構,常見如需求階段的領域模式(domain model)、分析階段的分析模式(analysis model)、或者是設計階段的設計模式(design model),都可以見到類別圖的身影。所以,在此小節的一般性指南中,編號從87到94共計八條的指南,便是在說明跟各層面類別圖有關的指南。

指南87 在領域類別模式中,專注辨識出「責任」就好(Identify Responsibilities on Domain Class Models)
在領域類別模式中,重點在類別以及類別所擔負的「責任」(responsibility),具體的屬性或操作在領域類別模式中決定。
比方說,訂購交易類別有責任提供訂購總金額,但是到底要用什麼方法提供,是定義一個名為總金額的屬性來保存總金額,還是設計一個計算總金額的操作來即時算出,則不在領域類別模式中決定,如圖1所示。


指南88 只有在設計模式中,才指定「能見度」(Indicate Visibility Only on Design Models)

指南89 跟程式語言有關的能見度,可以標示在「性質字串」中 (Indicate Language-Dependent Visibility with Property Strings)
能見度(visibility)通常用來表達屬性和操作的存取等級,UML設置了四種能見度,分別為:公開(public)、私有(private)、保護(protected)和套件(package)四種能見度。

公開和私有能見度最常見,也最容易懂。請看圖2的例子,存戶類別的屬性能見度是私有等級(private),操作為公開等級(public)。減號(-)為私有能見度,加號(+)為公開能見度。


公開等級的能見度就像透明的車窗玻璃,所有類別都可以視見。不過,私有等級則恰好相反,它像反光玻璃只有由同類別才可以視見。請看下面圖3的例子,帳戶類別可以看見存戶類別裡的公開操作,但是,無法視見存戶類別的私有屬性。


私有能見度滴水不漏,就連子類別也無法視見父類別的私有成員,這樣其實不利於繼承機制,如圖4所示。


所以,UML設置保護(protected)等級的能見度,特別開放子類別可以視見父類別的保護成員(protected member),以便提供更方便的繼承機制。保護能見度的符號是井號(#),如圖5所示。


至於套件(package)能見度,顧名思義,它是為了套件而設置的,它的符號是否定號(∼),如圖6所示。同套件的元素,可以視見其他元素內部的套件成員。所以,從圖6中,我們可以得知帳戶可以視見存戶類別的姓名和電話,但是分行(branch)卻無法視見,只因為分行不是同套件裡頭的成員。


由於,UML僅提供四種能見度,所以要想標示其他的能見度的話,可以標示在「性質字串」(property string)中。譬如,C++有一種「友朋」(friend)等級的能見度,這是UML所沒有的,可以標示在性質字串的大括號中,如圖7所示。



1 / 2 / 3 / 4 下一頁

分享到facebook

6/20-6/21 Enterprise Cloud EXPO
企業雲資源應用博覽會與企業雲端論壇
2013 BlackBerry Enterprise Experience Forum-無庸置疑的企業行動化使命
2013 BrainShare Technology Forum Asia Pacific Tour
2013 Java Developer Day
更多研討會
▼ ADVERTISEMENT ▼
▲ ADVERTISEMENT ▲

電週文化事業版權所有、轉載必究 •Copyright © iThome | 刊登廣告授權服務服務信箱隱私權聲明與會員使用條款關於iThome