每次都是懶,然後查到別人的描述。我感覺在我的腦子裏印象不深刻。還是要自己寫一篇。
不同的箭頭,代表着不同類之前的關係。
被箭頭指的類都是父類,基類,類A使用類B的類A。
六種如下:(組聚泛實關依)——從強到弱,而且箭頭的筆畫越來越少。
組合
特徵
- 類A組合類C,類C沒有獨立的生命週期,如A-書櫃與C-木板。
- 書櫃有木板,被指的是書櫃。
- 組合是是聚合的加強版。類A有一個成員變量爲類C的實例,但是類C中只有構造函數,沒有其他操作函數(如use, active)。所有的操作函數都在類A中實現。
- 形狀——實線實心菱形。
聚合
特徵
- 類A聚合類B,A和B 都是各自獨立的生命週期,如A-書櫃與B-書本。
- 書櫃有書,被指的是書櫃。
- has-a的單向關係,書櫃裏有書本,但是書本不一定要存在於書櫃中。
- 實現——類A有一個成員變量爲類B的實例。
- 形狀——實線空心菱形。
泛化
特徵
- 指的是一般與具體的關係。一般不是完全抽象。
- java裏的extends,抽象類和子類的關係。
- 被指的是抽象類。
- 形狀——實線三角。
實現
特徵
- 指的是抽象與具體的關係。
- java裏的implements ,接口(interface)與子類的關係。
- 被指的是接口。
- 形狀——虛線三角。
關聯
特徵
- 類A關聯類D,A是學校,D是學生。
- 實現:類A中的成員變量爲類D的實例。
- 關聯>聚合>組合
- 與聚合的聯繫與區別
- 語法上沒有區別
- 語義上,關聯強調[可以通過一個類獲取到另一個類的信息],聚合強調的[一對多的關係]。
- 形狀——實線箭頭。
依賴
特徵
- 類A依賴類B,則類A中的函數形參有類B的實例。
- 形狀——虛線箭頭。