物件導向的UML中的關係

2021-04-23 02:27:45 字數 1195 閱讀 8617

如果你確定兩件物件之間是is-a的關係,那麼此時你應該使用繼承;比如菱形、圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。

如果你確定兩件物件之間是has-a的關係,那麼此時你應該使用聚合;比如電腦是由顯示器、cpu、硬碟等組成的,那麼你應該把顯示器、cpu、硬碟這些類聚合成電腦類,而不是從電腦類繼承。

類間的關係

網上關於此類的討論非常多,發現對於該問題的理解各有各的說法,而各個說法中又相去甚遠。通過瀏覽這些討論以及對《o'reilly - uml 2.0 in a nutshell (2007)》的參考,發表一下自己的看法

類間關係有很多種,在大的類別上可以分為兩種:縱向關係、橫向關係。

縱向關係就是繼承關係,它的概念非常明確,也成為oo的三個重要特徵之一,這裡不過多的討論。

橫向關係較為微妙,按照uml的建議大體上可以分為四種:

依賴    (dependency)

關聯    (association)

聚合    (aggregation)

組合    (composition)

它們的強弱關係是沒有異議的:依賴 < 關聯 < 聚合 < 組合

然而它們四個之間的差別卻又不那麼好拿捏,需要好好體會。

依賴

關聯

聚合:  

組合

物件導向UML中類的關係

如果你確定兩件物件之間是is a的關係,那麼此時你應該使用繼承 比如菱形 圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。如果你確定兩件物件之間是has a的關係,那麼此時你應該使用聚合 比如電腦是由顯示器 cpu 硬碟等組成的,那麼你應該把顯示器 cpu 硬碟這些類聚合成電腦類,而...

物件導向UML中類關係

如果你確定兩件物件之間是is a的關係,那麼此時你應該使用繼承 比如菱形 圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。如果你確定兩件物件之間是has a的關係,那麼此時你應該使用聚合 比如電腦是由顯示器 cpu 硬碟等組成的,那麼你應該把顯示器 cpu 硬碟這些類聚合成電腦類,而...

UML中的關係

關係就是事物之間的聯絡。在物件導向的建模中,最重要的關係就是依賴 泛化 關聯和實現。一 依賴 是一種使用關係,說明乙個事物使用另乙個事物的資訊和服務,但反之未必可以行得通。圖形表示為一條有向的虛線。依賴的關係是所有關係當中最弱的,其他的在概念上都算是一種依賴關係,所以,依賴關係要少用,這樣才能更清楚...