面向對象編程對象和對象之前的關系

在面向對象編程(OOP)中,對象之間存在多種關系,用來表達它們如何協(xié)作、依賴或組成更復雜的結構。以下是常見的幾種關系的含義和區(qū)別:


一、依賴關系(Dependency)

A使用B,但 B 不是 A 的屬性。

通常是方法參數局部變量臨時使用某個對象的功能。

表示 “A 依賴于 B 的功能”,耦合程度最弱

UML 表示法:虛線箭頭:A ---> B


二、關聯(lián)關系(Association)

A擁有B,B 是 A 的屬性。

表示“有一個”的關系,可雙向或單向。

UML 表示法:實線箭頭或線:A ──> B(單向) 或A <──> B(雙向)


三、聚合關系(Aggregation)

A 和 B 是整體與部分的關系,B 屬于 A,但 B 的生命周期獨立于 A。

表示“弱擁有”,A 被銷毀時 B 可能依然存在

空心菱形:Department ◇─── Employee


四、組合關系(Composition)

是聚合的特殊形式,強擁有。

A 和 B 是整體與部分的關系,B 的生命周期完全依賴 A,A 銷毀,B 必然銷毀。

實心菱形:House ◆─── Room


五、繼承關系(Generalization / Inheritance)

子類繼承父類。在 Go 中表現為接口實現或結構體嵌套。

UML:空心三角箭頭:Dog ─? Animal


六、 實現關系(Realization)

類實現接口,或者某種接口適配。

Go 語言中是結構體實現接口。

UML 表示:虛線三角箭頭:A - -? Interface


總結

關系? ? ? ? ? |? ? ? ? ? ? ? ? 關鍵點? ? ? ? ? ? ? ? ? |? ? ? 表示

------------|------------------------------|-----------------

依賴? ? ? ? ? | 臨時使用、非字段? ? ? ? ? ? ?| 虛線箭頭

關聯(lián)? ? ? ? ?| 擁有字段,生命周期獨立? | 實線箭頭

聚合? ? ? ? ?| 整體-部分,生命周期獨立 | 空心菱形

組合? ? ? ? ?| 整體-部分,生命周期綁定 | 實心菱形

繼承? ? ? ? ?| “是一個”的關系? ? ? ? ? ? ? ? ? ? | 空心三角箭頭

實現? ? ? ? ?| 接口實現? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 虛線三角箭頭


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容