uml類圖
類圖組成
類圖有上中下三部分:上層是類名,中間層是屬性(類的成員變量),下層是方法(類的成員函數)。 #1類名的表示方式: 類名寫在最上層,抽象類(類中有純虛函數)類名需要使用斜體顯示 #2屬性的表示方式:【可見性】【屬性名稱】:【類型】= { 缺省值,可選 } #3方法的表示方式:【可見性】【方法名稱】(【參數名 : 參數類型,……】):【返回值類型】虛函數的表示是使用斜體
如果是純虛函數則需要在最后給函數指定=0。 #可見性:+ 表示public、# 表示protected、- 表示private、__(下劃線)表示static
類與類之間的關系
繼承關系 繼承也叫作泛化(Generalization),在UML中,泛化關系用帶空心三角形的實線來表示。 關聯關系 關聯(Assocition)表示一個對象與另一個對象之間有聯系,如汽車和輪胎、師傅和徒弟、班級和學生等。在UML類圖中,用(帶接頭或不帶箭
頭的)實線連接有關聯關系的類。在C++中這種關聯關系在類中體現為:一個類的對象作為另一個類的成員變量。 關聯關系有三種,分別是:單向關聯、雙向關聯、自關聯。 #單向關聯關系 單向關聯指的是關聯只有一個方向使用的連接線是帶單向箭頭的實線, #雙向關聯關系一般使用沒有箭頭的實線來連接有雙向關聯關系的兩個類,有些UML繪圖軟件使用的是帶雙向箭頭的實線來表示雙向關聯關系。 #自關聯關系 自關聯指的就是當前類中包含一個自身類型的對象成員,這在鏈表中非常常見,一般使用帶箭頭的實線指向自己來描述自關聯關系
聚合關系 聚合(Aggregation)關系表示整體與部分的關系。在聚合關系中,成員對象是整體的一部分,但是成員對象可以脫離整體對象獨立存在。
在UML中,聚合關系指向整體對象的一端為帶空心菱形的直線表示
組合關系 組合(Composition)關系也表示的是一種整體和部分的關系,但是在組合關系中整體對象可以控制成員對象的生命周期,一旦整體對象不存在,成員對象也不存在,整體對象和成員對象之間具有同生共死的關系。 在UML中組合關系用帶實心菱形的直線表示,下面舉個組合關系的例子: 頭(Head)和 嘴巴(Mouth)、鼻子(Nose)、耳朵(Ear)、眼睛(Eye) 依賴關系 依賴(Dependency)關系是一種使用關系,特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另一個事物時使用依賴關系,大多數情況下依賴關系體現在某個類的方法使用另一個類的對象作為參數。 在UML中,依賴關系用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方
關聯關系、聚合關系、組合關系之間的區別
關聯和聚合的區別主要在于語義上:關聯的兩個對象之間一般是平等的,聚合則一般是不平等的。
聚合和組合的區別則在語義和實現上都有差別:
組合的兩個對象之間生命周期有很大的關聯,被組合的對象在組合對象創建的同時或者創建之后創建在組合對象銷毀之前銷毀,聚合則無需考慮這些事情。
一般來說被組合對象不能脫離組合對象獨立存在,而且也只能屬于一個組合對象,聚合則不一樣,被聚合的對象可以屬于多個聚合對象。
最后,再舉例子來描述一下這三種關系:
朋友之間屬于關聯關系,因為這種關系是平等的,關聯關系只是用于表示兩個對象之間的一種簡單的聯系而已。
圖書館看書的時候,人和書屬于聚合關系。書是可以獨立存在的,而且書不僅可以屬于自己,也可以屬于別人。
人和自己的心臟屬于組合關系,因為心臟不能脫離人體而獨自存在。
不過,實際應用中,這三種關系的界限劃分其實沒有那么清楚,有些時候我們會感覺組合和聚合沒什么區別,所以,在設計的時候沒必要死摳細節,只要能夠利用對象之間的關系設計出可行的解決方案即可。

浙公網安備 33010602011771號