設計模式基礎之類關係

2021-08-27 23:19:46 字數 1216 閱讀 7360

類與類之間的表示關係

依賴關係 :簡單的理解,依賴就是乙個類a使用到了另乙個類b,而這種使用關係是具有偶然性的、臨時性的、非常弱的,但是類b的變化會影響到類a。比如某人要過河,需要借用一條船,此時人與船之間的關係就是依賴。表現在**層面,為類b作為引數被類a在某個method方法中使用。在uml類圖設計中,依賴關係用由類a指向類b的帶箭頭虛線表示。

關聯關係 :關聯體現的是兩個類之間語義級別的一種強依賴關係,比如我和我的朋友,這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的。關聯可以是單向、雙向的。表現在**層面,為被關聯類b以類的屬性形式出現在關聯類a中,也可能是關聯類a引用了乙個型別為被關聯類b的全域性變數。在uml類圖設計中,關聯關係用由關聯類a指向被關聯類b的帶箭頭實線表示,在關聯的兩端可以標註關聯雙方的角色和多重性標記。關聯關係共分為兩種:單向關聯和雙向關聯。所謂單向關聯通俗點講就是「你中有我,但我中未必有你」,比如小明擁有一輛車(注意和小明開車進行區分),但車這個物件可不擁有你啊。和單向關聯相對應的是雙向關聯,也即是」你中有我,我中有你」,比如夫妻就是一種雙向關聯.

聚合關係 : 聚合是關聯關係的一種特例,它體現的是整體與部分的關係,即has-a的關係。此時整體與部分之間是可分離的,它們可以具有各自的生命週期,部分可以屬於多個整體物件,也可以為多個整體物件共享。比如計算機與cpu、公司與員工的關係等,比如乙個航母編隊包括海空母艦、驅護艦艇、艦載飛機及核動力攻擊潛艇等。表現在**層面,和關聯關係是一致的,只能從語義級別來區分。在uml類圖設計中,聚合關係以空心菱形加實線箭頭表示。

組合關係 : 組合也是關聯關係的一種特例,它體現的是一種contains-a的關係,這種關係比聚合更強,也稱為強聚合。它同樣體現整體與部分間的關係,但此時整體與部分是不可分的,整體的生命週期結束也就意味著部分的生命週期結束,比如人和人的大腦。表現在**層面,和關聯關係是一致的,只能從語義級別來區分。在uml類圖設計中,組合關係以實心菱形加實線箭頭表示。

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

設計模式 UML關係基礎

設計模式 uml關係基礎 uml關係基礎 類在繼承中表現為泛化和實現。繼承關係為is a的關係,兩個物件之間用is a表示為繼承關係。eg,自行車是車,貓是動物。泛化關係用空心箭頭表示 如下圖。a繼承自b 用空心箭頭表示a繼承自b 泛化關係表示為繼承抽象類。抽象類可以繼承乙個具體的類的。抽象類可以被...

關係模式 基礎

關係表 1 屬性 對應表中的列。2 域 列的取值範圍 相同資料型別的值的集合 3 元組 表中的行。4 關係 由n個域笛卡爾積 即從每個域中抽取作為元組的乙個分量 的子集組成的一張2維表稱為關係。由於並非所有的元組都有意義,所以只有那些有意義的元組的集合才是關係。關係的三個屬性 1 關係名 表名 2 ...

設計模式 單例模式之類模板實現

檔名稱 singletonobj.h 摘 要 單例模式,使用類模板 用法示例 declare singleton cdestobject 當前版本 1.0 作 者 fzuim 完成日期 2018年3月8日 pragma once templateclass csingletonobj csingle...