如果你確定兩件物件之間是is-a的關係,那麼此時你應該使用繼承;比如菱形、圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。
如果你確定兩件物件之間是has-a的關係,那麼此時你應該使用聚合;比如電腦是由顯示器、cpu、硬碟等組成的,那麼你應該把顯示器、cpu、硬碟這些類聚合成電腦類,而不是從電腦類繼承。
類間的關係
網上關於此類的討論非常多,發現對於該問題的理解各有各的說法,而各個說法中又相去甚遠。通過瀏覽這些討論以及對《o'reilly - uml 2.0 in a nutshell (2007)》的參考,發表一下自己的看法
類間關係有很多種,在大的類別上可以分為兩種:縱向關係、橫向關係。
縱向關係就是繼承關係,它的概念非常明確,也成為oo的三個重要特徵之一,這裡不過多的討論。
橫向關係較為微妙,按照uml的建議大體上可以分為四種:
依賴 (dependency)
關聯 (association)
聚合 (aggregation)
組合 (composition)
它們的強弱關係是沒有異議的:依賴 < 關聯 < 聚合 < 組合
然而它們四個之間的差別卻又不那麼好拿捏,需要好好體會。
依賴:
關聯:
聚合:
組合:
from:
物件導向UML中類的關係
如果你確定兩件物件之間是is a的關係,那麼此時你應該使用繼承 比如菱形 圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。如果你確定兩件物件之間是has a的關係,那麼此時你應該使用聚合 比如電腦是由顯示器 cpu 硬碟等組成的,那麼你應該把顯示器 cpu 硬碟這些類聚合成電腦類,而...
物件導向的UML中的關係
如果你確定兩件物件之間是is a的關係,那麼此時你應該使用繼承 比如菱形 圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。如果你確定兩件物件之間是has a的關係,那麼此時你應該使用聚合 比如電腦是由顯示器 cpu 硬碟等組成的,那麼你應該把顯示器 cpu 硬碟這些類聚合成電腦類,而...
物件導向中類與類之間的關係
物件導向中類與類之間的關係 1.繼承 單重繼承 多層繼承 多層繼承也就是子繼承父,下個類繼承子,一對多的關係 2.依賴 public class test02 3.聚合 組合 主要體現整體與部分之間的關係。描述方式與關聯關係一樣,都是用成員變數來描述的。例如 乙個user物件包含以下屬性,姓名,id...