類圖畫法
1、類圖的概念
A、顯示出類、接口以及它們之間的靜態結構和關系
B、用於描述系統的結構化設計
2、類圖的元素
類、接口、協作、關系,我們只簡單介紹壹下這四種元素。
同其他的圖壹樣,類圖也可以包含註解和限制。
類圖中也可以包含包和子系統,這兩者用來將元素分組。
有時候妳也可以將類的實例放到類圖中。
3、類
A、類是對壹組具有相同屬性、操作、關系和語義的對象的抽象,它是面向對象系統組織結構的核心,包括名稱部分(Name)、屬性部分(Attribute)和操作部分(Operation),見下圖。
B、類屬性的語法為:
[可見性]屬性名[:類型][=初始值][{屬性字符串}]
可見性:公有(Public)“+”、私有(Private)“-”、受保護(Protected)“#”
類操作的語法為:
[可見性]操作名[(參數表)][:返回類型][{屬性字符串}]
可見性:公有(Public)“+”、私有(Private)“-”、受保護(Protected)“#”、包內公有(Package)“~”
參數表:
定義方式:“名稱:類型”;若存在多個參數,將各個參數用逗號隔開;參數可以具有默認值;
屬性字符串:
在操作的定義中加入壹些除了預定義元素之外的信息。
4、接口
在沒有給出對象的實現和狀態的情況下對對象行為的描述。
壹個類可以實現壹個或多個接口。
使用兩層矩形框表示,與類圖的區別主要是頂端有<>顯示:
也可以用壹個空心圓表示:
5、協作
協作是指壹些類、接口和其他的元素壹起工作提供壹些合作的行為,這些行為不是簡單地將元素加能得到的。例如:當妳為壹個分布式的系統中的事務處理過程建模型時,妳不可能只通過壹個類來明白事務是怎樣進行的,事實上這個過程的執行涉及到壹系列的類的協同工作。使用類圖來可視化這些類和他們的關系。
6、關系
這篇文章的重點,詳見第二部分。
二、類之間的幾種關系
1、泛化(Generalization)
A、是壹種繼承關系,表示壹般與特殊的關系,它指定了子類如何特化父類的所有特征和行為,描述了壹種“isakindof”的關系。例如:老虎是動物的壹種,即有老虎的特性也有動物的***性。
B、用帶空心箭頭的實線表示,箭頭指向父類,如下圖:
2、實現(Realization)
A、是壹種類與接口的關系,表示類是接口所有特征和行為的實現。
B、用帶空心箭頭的虛線表示,箭頭指向接口,如下圖:
3、關聯(Association)
A、壹般關聯
a、關聯關系是類與類之間的聯結,它使壹個類知道另壹個類的屬性和方法,指明了事物的對象之間的聯系,如:老師與學生、丈夫與妻子。關聯可以是雙向的,也可以是單向的,還有自身關聯。
b、用帶普通箭頭的實心線表示。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有壹個箭頭,如下圖:
B、聚合(Aggregation)
a、它是整體與部分(整體hasa部分)的關系,且部分可以離開整體而單獨存在,如車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。聚合關系是關聯關系的壹種,是強的關聯關系,關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
b、用帶空心菱形的實線表示,菱形指向整體,如下圖:
C、組合(Composition)
a、它是整體與部分的關系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關系,沒有公司就不存在部門。組合關系是關聯關系的壹種,是比聚合關系還要強的關系,它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
b、用帶實心菱形的實線表示,菱形指向整體,如下圖:
4、依賴(Dependency)
A、元素A的變化會影響元素B,那麽B和A的關系是依賴關系,B依賴A。要避免雙向依賴,壹般來說,不應該存在雙向依賴。關聯、實現、泛化都是依賴關系。
B、用帶箭頭的虛線表示,箭頭指向被依賴元素。
5、總結
各種關系的強弱順序如下:
泛化=實現>組合>聚合>關聯>依賴
下面這張UML圖,比較形象地展現了各種類圖關系:
如何繪制UML順序圖1.在VP官網下載。
2.在VisualParadigm中打開已下載的vpp文件。通過工具欄中的Project>Open可打開這個項目。
3.打開類圖Registration,通過對圖表內容的查看,我們了解到這裏有三個類——RegistrationUI、RegistrationController和User。
4.現在我們想要對在運行時這些類的對象實例間的交互進行建模。由於控制器類負責控制登記流程,因此添加壹個它的子順序圖。將鼠標指針移動到RegistrationController,點擊底部右下角的資源圖標然後從彈出菜單中選擇NewDiagram...。
5.在NewDiagram窗口,選擇SequenceDiagram,然後點擊Next。保持默認圖標名稱不變,然後點擊OK進行確認。
6.壹個空的UML順序圖創建以後,從圖表工具欄中選擇BoundaryLifeLine(B)。
7.點擊圖表創建生命線的分界線。
8.輸入registrationUI作為生命線名稱,然後敲擊回車鍵進行確認。
9.右鍵點擊生命線,然後從彈出菜單中選擇electClass>SelectClass...。
10.在SelectClass窗口,選擇RegistrationUI類,然後點擊OK進行確認。
然後所繪制的生命線就:
11.創建壹個控制生命線(ControlLifeLine):registrationController:RegistrationController和壹個實體生命線(EntityLifeLine):user:User。不要忘了為它們選擇合適的類。所繪制的圖表如下圖所示:
12.讓我們為生命線之間所調用的方法進行建模,將鼠標指針移動到生命線registrationUI。
13.按住資源ResourceCatalog,然後進行拖動。
14.移動到生命線registrationController,然後釋放鼠標按鈕。
15.從ResourceCatalog中選擇Message。
16.這會彈出壹個可供妳選擇的新的序列信息的列表名稱。妳可以看到這些選項都是classRegistrationController的操作,在其中選擇createUser(name,password)。
17.關聯生命線registrationController和user,我們可以看到是registrationController創建了user生命線。因此,我們需要創建壹條信息來關聯這兩者。將鼠標指針移動激活生命線registrationController。
18.按住資源ResourceCatalog進行拖動。
19.在生命線user處放開鼠標指針。
20.從ResourceCatalog中選擇CreateMessage。
於是信息就被創建好了,所得的圖像如下圖所示:
21.創建從生命線registrationController到user的信息setName和setPassword,到目前為止,圖表如下圖所示:
22.您還可以指定操作的參數,以信息createUser(name,password)為例。右鍵點擊它,然後從下拉菜單中選擇OpenSpecification...。
23.通過點擊按鈕上的省略號對行為屬性進行編輯,跳轉到Actiontype。
24.在CallActionSpecification窗口,點擊Add>Text...添加參數。在本例中,點擊Add>Text...添加參數peter。再次點擊Add>Text...添加參數mypwd。註意,這裏的兩個參數指的是兩個通過操作賦予的參數,如果妳再添加第三個參數,它將被自動忽略(因為只定義了兩個操作)。
25.點擊OK關閉窗口,然後返回圖表。添加的參數被呈現在了圖表上
如何繪制UML類圖?類圖的屬性和方法是指類本身的屬性和行為,類及其屬性和方法是在程序設計過程中產生的,類圖只是用Visio繪制出來,用於項目團隊成員間或項目幹系人之間的溝通和交流。例如:如果要設計壹個關於銷售蘋果的程序,蘋果就可以看作壹個實體(類),其基本屬性有顏色、形狀、味道、種類等,行為有開花、落果、膨大、成熟等行為。
下面給出繪制蘋果類圖的方法和步驟:
第壹步:啟動Visio2010或更高版本,如下圖:
第二步:在模板類別中選擇“軟件和數據庫”,進入選擇模板窗口,如下圖:
第三步:選擇“UML模型圖”,並用鼠標雙擊“UML模型圖”圖標,進入UML繪圖窗口,如下圖:
第四步:選擇“UML靜態結構”,如下圖:
第五步:按下鼠標左鍵,拖動“類圖標”,到工作區域窗口,如下圖:
第六步:雙擊工作區域窗口的類框圖,如下圖:
第七步:在UML類屬性窗口,可以修改類的名稱,添加屬性(特性)和操作(方法)
第八步:在UML類屬性窗口,修改類名為“蘋果”,如下圖:
第九步:在UML類屬性窗口,選擇特性,分別輸入蘋果的顏色、形狀、味道等屬性,類型為數據類型,可以選擇字符串、整型等,如下圖:
第十步:在UML類屬性窗口,選擇操作,分別輸入蘋果的行為開花、落果、膨大、成熟方法,樣例中方法名稱用的中文,實際應用應該采用英文,如下圖:
繪制完成的UML類圖