1. 程式人生 > >面向物件設計類之間關係

面向物件設計類之間關係

1. 繼承 is-a

A繼承自B:用一條帶空心箭頭的實線表示。
只有當A是一個B時,才用繼承。例如,小轎車是一種車,別墅是一種房。
繼承.png-5.2kB

2. 實現 like a

A實現了B:用一條帶空心箭頭的虛線表示。
A具有B的特徵,A像一個B,用實現。例如,人是可比較的(根據身高,體重,年齡等),人可以實現可比較這一介面。
實現.png-5.1kB

3. 依賴 uses-a

A依賴B:用一條帶箭頭的虛線表示。
A的方法裡面用到了B,通過構造方法或成員方法引數傳入。
依賴.png-6.3kB

4. 關聯

關聯關係預設不強調方向,表示物件間相互知道,用一條不帶箭頭的實線表示;
A關聯B:用一條帶箭頭的實線表示;
A的成員變數有B,表示A知道B,但B不知道A。
關聯.png-4.3kB

5. 聚合 has-a

A聚合了B,或者說A由B組成:用一條帶空心菱形箭頭的實線表示。
聚合關係用於表示實體物件之間的關係,表示整體由部分構成的語義;例如一個部門由多個員工組成。
與組合關係不同的是,整體和部分不是強依賴的,即使整體不存在了,部分仍然存在;例如, 部門撤銷了,員工不會消失,他們依然存在。
聚合.png-4.1kB

6. 組合

A組合了B,或者A由B組成:用一條帶實心菱形箭頭的實線表示。
與聚合關係一樣,組合關係同樣表示整體由部分構成的語義;比如公司由多個部門組成。
但組合關係是一種強依賴的特殊聚合關係,如果整體不存在了,則部分也不存在了;例如, 公司不存在了,部門也將不存在。
組合.png-3.9kB

區分聚合or組合:沒有了整體,部分還存在嗎?