[基礎概念]UML類之間的關係

類之間的關係

類間關係有很多種,在大的類別上可以分爲兩種:縱向關係,橫向關係。縱向關係就是繼承關係。橫向關係按照UML的建議大體可以分爲四種

 

UML表示法

關係

依賴(Dependency)

虛線+箭頭( - - ->)

...use a ... 用(爲函數中的參數)具有偶然性。表現在代碼層面,爲類B作爲參數被類A在某個method方法中使用;局部變量。單向依賴(--->)

關聯(Association)

實線+箭頭(→)

...has a ... 有 。具體表現在,成員變量和參數若類A單向關聯指向類B,則在類A中存在一個屬性B b。

單向關聯(→),雙向關聯(─),自關聯依賴和關聯的區別:一個是使用,一個是擁有;關聯可以是雙向的,而依賴必須是單向的。

聚合(Aggregation)

空心菱形+實線+箭頭(◇→)

... has a ... 有。 聚合是關聯關係的一種特例,它體現的是整體與部分的關係,即has-a的關係。此時整體與部分之間是可以分離的,它們具有各自的生命週期。class A {...} class B { A* a; .....}當類之間有整體--部分關係的時候,要用聚合、組合。

組合(Composition)

實心菱形+實線+箭頭(◆→)

... is a part of ...組成,組合是關聯關係的一種特例。整體和部分是不可分割的,它們具有相同的生命週期,組合類要對被組合類負責。class A{...} class B{ A a; ...}。繼承:(是一種 a kind of);組合:(一部分 a part of )

 

縱向關係

繼承(Generalization)

又稱 泛化關係     

實線+空三角形(—△)                       

...a kind of...是一種。子類繼承父類

實現(Implementation)

虛線+空三角形(- - -△)

子類實現抽象類

它們的強弱關係:依賴 < 關聯 < 聚合 < 組合。聚合和組合是關聯的兩種具體關係,關聯包含組合和聚合。

繼承

繼承用一條帶空心箭頭的直接表示

實現

實現關係用一條帶空心箭頭的虛線表示。

組合

與聚合關係一樣,組合關係同樣表示整體由部分構成的語義。比如公司由多個部門組成,但組合關係是一種強依賴的特殊聚合關係,如果整體不存在了,則部分也不存在了。例如,公司不存在了,部門也將不存在了。

聚合

聚合關係用於表示實體對象之間的關係,表示整體由部分構成的語義,例如一個部門由多個員工組成。與組合關係不同的是,整體和部分不是強依賴的,即使整體不存在了,部分仍然存在。例如,部門撤銷了,人員不會消失,他們依然存在。

關聯

關聯關係是用一條直線表示的,它描述不同類的對象之間的結構關係,它是一種靜態關係, 通常與運行狀態無關,一般由常識等因素決定的。它一般用來定義對象之間靜態的、天然的結構, 所以,關聯關係是一種“強關聯”的關係

比如,乘車人和車票之間就是一種關聯關係,學生和學校就是一種關聯關係,關聯關係默認不強調方向,表示對象間相互知道。如果特別強調方向,如下圖,表示 A 知道 B ,但 B 不知道 A 。

依賴

依賴關係是用一套帶箭頭的虛線表示的,如A依賴於B,他描述一個對象在運行期間會用到另一個對象的關係

與關聯關係不同的是,它是一種臨時性的關係,通常在運行期間產生,並且隨着運行時的變化,依賴關係也可能發生變化。顯然,依賴也有方向,雙向依賴是一種非常糟糕的結構,我們總是應該保持單向依賴,杜絕雙向依賴的產生。

UML中的類之間關係實例圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章