天天看點

我所了解的OOP——UML六種關系

最近由于經常給公司的小夥伴兒們講一些OOP的基本東西,每次草紙都被我弄的很尴尬,畫來畫去自己都亂了,有時候也會嘗試使用UML表示類之間的關系,但UML從畢業後就再也沒接觸過了,經常會被小夥伴兒們指出繼承應該是實線,組合菱形是實心的。。。,好尴尬,終于痛定思痛系統學習一下。

UML定義的關系主要有:泛化、實作、依賴、關聯、聚合、組合,這六種關系緊密程度依次加強,分别看一下

概念:泛化是一種一般與特殊、一般與具體之間關系的描述,具體描述建立在一般描述的基礎之上,并對其進行了擴充。在程式中是通過繼承類實作的。比如狗是對動物的具體描述,在面向對象設計的時候一般把狗設計為動物的子類。

表示方法:空心三角形箭頭的實線,子類指向父類

我所了解的OOP——UML六種關系

概念:實作是一種類與接口的關系,表示類是接口所有特征和行為的實作,在程式中一般通過類實作接口來描述

表示方法:空心三角形箭頭的虛線,實作類指向接口

我所了解的OOP——UML六種關系

概念:是一種使用的關系,即一個類的實作需要另一個類的協助,是以要盡量不使用雙向的互相依賴,在程式中一般表現為類A中的方法需要類B的執行個體作為其參數或者變量,而類A本身并不需要引用類B的執行個體作為其成員變量。

表示方法:虛線箭頭,類A指向類B。

我所了解的OOP——UML六種關系

概念:表示類與類之間的聯接,它使一個類知道另一個類的屬性和方法,這種關系比依賴更強、不存在依賴關系的偶然性、關系也不是臨時性的,一般是長期性的,在程式中被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型為被關聯類B的全局變量

表示方法:實線箭頭,類A指向類B

我所了解的OOP——UML六種關系

概念:聚合關聯關系的一種特例,是強的關聯關系。聚合是整體和個體之間的關系,即has-a的關系,整體與個體可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享。程式中聚合和關聯關系是一緻的,隻能從語義級别來區分;

表示方法:尾部為空心菱形的實線箭頭(也可以沒箭頭),類A指向類B

我所了解的OOP——UML六種關系

概念:組合也是關聯關系的一種特例。組合是一種整體與部分的關系,即contains-a的關系,比聚合更強。部分與整體的生命周期一緻,整體的生命周期結束也就意味着部分的生命周期結束,組合關系不能共享。程式中組合和關聯關系是一緻的,隻能從語義級别來區分。

表示方法:尾部為實心菱形的實作箭頭(也可以沒箭頭),類A指向類B

我所了解的OOP——UML六種關系

    本文轉自魏瓊東部落格園部落格,原文連結:http://www.cnblogs.com/dolphinX/p/3296681.html,如需轉載請自行聯系原作者

繼續閱讀