close

文/邱郁惠 2010-06-24

用VS2010動手學UML第12回在UML2十四款圖中,類別圖是最難上手的兩種圖款之一,但它卻是最重要的圖款,可以用來繪製系統共用的整體靜態架構

 
在VS2010/UML所支援的所有UML圖款中,我個人覺得類別圖(Class Diagram)以及循序圖(Sequence Diagram)是最難的兩款圖。

不過,別擔心類別圖的困難度,我記得曾經聽一位講師說到:「愈困難的事情,愈好做。」仔細想想,有些事情真的就是這樣。因為,既困難又重要的事物,容易引發聰明人想挑戰、想投入、想以此獲利的熱情,所以可以找到許多資源。

雖然,這是樂觀的想法,但聽起來也不無道理,不過,我們可以找到什麼資源,來協助建構困難且重要的類別圖呢?分享一些我經常使用的資源如下:

1.交易樣式:「交易樣式」(Transaction Patterns)是我覺得最實用、也最容易使用的資源了,我在之前出版的三本UML專書中,都提到過交易樣式,有興趣請你參考我之間出版的UML專書,如下:

● 《寫給SA的UML/MDA實務手冊》:我在出版的第一本UML書中,簡單提到了交易樣式的來源和概念。

● 《寫給SA的UML/UseCase實務手冊》:這本UML書中,我就詳細的解析了交易樣式的概念和舉例。

● 《學會UML/OOAD這樣開始就對了》:在這本UML書中的第一章,我就開宗明義直接使用交易樣式了。

2.分析樣式:除了Peter Coad提出的交易樣式外,Martin Fowler也有提出「分析樣式」(Analysis Patterns)也有許多靜態結構值得好好學一學。

3.領域標準:再者,許多領域有提出自己的標準,從中也可以吸收到非常專業的領域知識,有助於設計出品質較佳的類別圖。

VS2010中的類別圖
先說明,類別圖的概念是UML2十四款圖中,涵蓋的概念最多的一款圖,其主要原因在於,它同時包含了類別圖、套件圖(Package Diagram)和物件圖(Object Diagram)這三款圖的概念。所以,我個人認為學習類別圖概念的最佳方法之一是,拆成三個主題來學。

不過,VS2010/UML並沒有支持物件圖,所以我們可以拆成類別圖和套件圖兩個主題來學習。我會先用一系列文章談論類別圖的概念,而套件圖的概念留待後面的再談。所以,在類別圖工具箱中的「套件」(Package)和「套件匯入」(Package Import),我們就先不談了,如圖1所示。

圖1 套件與套件匯入
請繼續看圖1的類別圖工具箱,我們先來整理一下前面學到了幾個概念,才來繼續往下學習。很棒的是,有好幾個概念,我們在先前的用例圖系列文章中,已經接觸過了,現在只要多學一些特性。好消息,是吧!溫故知新一下,之前接觸過的概念,條列如下:

●類別(Class):雖然,我們前頭從沒正式談過類別的概念,但是已經看過好幾次它的蹤影了。在關於UML母模的圖中,看到的矩形圖示,就是類別,本章我們會正式來認識它了!
●註解(Comment):還記得我們在活動圖章節中,曾經提到「註解」用來放置備忘文字。不過,當時我們沒有打開註解的性質表細看,在本章我們會把註解看得更仔細些!

●結合關係(Association):在用例圖章節中,結合關係有用在參與者和用例之間,當時我們有提到類別之間的結合關係才是重點,所以本章我們還會繼續來看結合關係的概念。

●依賴關係(Despnedency):同樣在用例圖章節中,我們談到VS2010/UML把原先屬於部署圖的「產出物」(Artifact)概念,挪用來代表「用例敘述」(Use Case Narrative)時,用來連結產出物和用例的關係線,就是依賴關係。依賴關係同樣可以用在類別之間,以及類別與介面(Interface)之間,所以在本章中,我們會再度介紹依賴關係。

●連接線(Connector):在活動圖的章節中,曾經出現過的VS2010/UML特有的「連接線」概念,在用例圖中沒出現,不過此處又出現了。我猜想,可能是因為類別之間的關係種類眾多,所以VS2010才會又出現這個智慧小幫手。

●繼承關係(Inheritance):請先看到圖2的工具箱,用例圖的工具箱中有個「一般化關係」(Generalization),類別圖的工具箱中沒有一般化關係,但是有「繼承關係」(Inheritance)。看起來,這兩個概念在VS2010/UML中是混用了;在UML中,則稱之為「一般化關係」,不稱為「繼承關係」。請你再看到圖3,我在用例圖的兩用例之間放置一般化關係,也在類別圖的兩類別之間放置繼承關係,打開兩個關係的性質表一看,可以發現它們其實都稱為「一般化關係」(Generalization)。

圖2 一般化關係與繼承關係

圖3 一般化關係的性質表

複習過了你熟悉的概念,下一回合我們開始介紹類別圖,將分成四個部分來談,包括類別、關係、介面,前三個部分中談到的概念都是UML官方認定初級概念,另外還有屬於高級概念的「樣板」。

先簡單說明這四種概念,一個類別(Class)代表一群相同的物件(Object)。這群物件在語意、屬性、操作和關係這四項特性上,呈現出相同並且可以讓人辨識出相同。通常,真實事物的靜態資料會抽象成類別中的屬性,而它們的行為則會抽象成類別中的操作。屬性和操作是類別最重要的兩個組成元素。

不過,單獨的類別無法提供太大的功用,必須透過關係連結其他的類別,造成一加一大於二的團結力量,在類別圖中的關係概念包括了結合關係、聚合關係、組合關係、繼承關係(一般化)。

第三類初級概念是介面(Interface),在物件導向技術中,介面概念是很重要的一項技術。一個介面就像一份合約,它記錄了一組關係緊密的公開特徵和契約,使用該介面的物件可以得到介面上所約定的服務,而實作該介面的物件則必須提供介面上所約定的服務。

最後一項我們會介紹的高級概念是「樣版」(Template),簡單來說,樣版透過設定「參數」(Parameter)的方式,讓開發人員可以藉由繫結(Bind)不同的參數值,產生不同的繫結元素。

接下來的系列文章中,會更詳細地介紹這四類概念,最後還會分享10條類別圖最佳實務,以及案例練習,敬請期待。

參考:http://www.ithome.com.tw/itadm/article.php?c=61849

arrow
arrow
    全站熱搜

    小草 發表在 痞客邦 留言(0) 人氣()