1. 程式人生 > >UML類圖:六大關係(泛化,實現,依賴,關聯,聚合,組合)

UML類圖:六大關係(泛化,實現,依賴,關聯,聚合,組合)

UML類圖

 使用UML類圖,我們可以表示出類的靜態內容以及它們之間的關係。在類圖中,我們可以顯示出類的成員變數和成員函式,以及類之間的繼承和引用關係。簡而言之,我們可以描繪出類之間所有原始碼級的依賴關係。 在UML中一個類表示為如下圖:

類圖中變數和函式名前面的符號。短橫線(-)表示private;井號(#)表示protected;加號(+)表示public; 變數和函式引數的型別顯示在變數和引數後面的冒號之後。同樣,函式的返回值顯示在函式後面的冒號之後。

=====================================================================================================

UML中類的主要關係有:依賴、關聯、聚合、組合、泛化(繼承/實現)。

1.依賴:

在UML中,依賴的圖形表示是虛線+箭頭,箭頭指向被依賴的類,在程式程式碼中,具有依賴關係的類常常被宣告為成員函式的引數,而不宣告為類的成員變數。如下圖:

Dependency

2.關聯:

在UML中,關聯的圖形表示是實線+箭頭(如果沒有加箭頭,則是雙向關聯),箭頭指向被關聯的類,在程式程式碼中,具有關聯關係的類常常被宣告為類的引用型別的成員變數如下圖:

Association

=================================================================================

3.聚合:

在UML中,聚合的圖形表示是空心菱形+實線+箭頭,箭頭指向被擁有的類,聚合是關聯的一種特殊形式,暗含整體/部分關係,但是對方卻不是唯一屬於自己的那種關係。UML為我們提供了一個非常簡單的關於聚集的硬性規定:整體不能屬於其組成部分。如下圖:

Aggregation       

例如:Wheel類扮演wheels角色, 聚合4個到Car物件裡面去,空心的菱形表示Wheel物件並不隨Car的建立而建立,銷燬而銷燬.

    uploads/200706/04_213911_11215211jbjh.jpg

4.組合:

在UML中,聚合的圖形表示是實心菱形+實線+箭頭,箭頭指向被擁有的類,UML中的組合關係是指兩個類之間有嚴格的所屬關係,一般是整體和部分的關係,而且對方是唯一屬於自己的那種關係。

這同具有關聯的類和具有聚合的類一樣。區別在於組合關係中該類不能被其它類共享,所以類的生命期是完全被所屬類控制的。如下圖:

Composition

例如:意義和上面類似, 唯一不同的是,實心菱形表示Department物件隨Company物件的建立而建立,銷燬而銷燬.

    uploads/200706/04_214248_11215212zhjh.jpg

===========================================================================

5.泛化(繼承):

 UML中的所有箭頭都指向原始碼依賴的方向,因此,箭頭指向基類。在UML中使用箭頭時要非常的小心,如果畫箭頭時比較粗心那麼就可能難以分辨是繼承還是關聯,為了清楚起見,總是把繼承關係畫成縱向的,關聯畫成橫向的。如下圖:

Generalization

 在介面繼承關係稱為實現,連線線使用虛線,如下圖:

Realization

對於繼承、實現這兩種關係沒多少疑問,他們體現的是一種類與類、或者類與介面間的縱向關係;其他的四者關係則體現的是類與類、或者類與介面間的引用、橫向關係,是比較難區分的,有很多事物間的關係要想準備定位是很難的,前面也提到,這幾種關係都是語義級別的,所以從程式碼層面並不能完全區分各種關係;但總的來說,後幾種關係所表現的強弱程度依次為:組合>聚合>關聯>依賴。