物件組合與物件聚合在計算機科學中是將物件或數據類型結合成更復雜的方式。雖然對話中經常忽略了組合與聚合之間的區別,但這兩者在實踐中中的功能及意義至關重要。在看看 UML(統一建模語言)如何描繪這些隱秘關係之前,讓我們深入了解它們的核心定義及差異。
物件組合是將物件合併到複合物件中的過程,確保每個物件的封裝性,並使用它們明確的介面,而不顯示其內部實現。
物件組合除了是物件導向程式設計的一個基礎,還強調在合併物件的同時如何保持其封裝性。相對於數據結構,物件組合更側重於邏輯或概念的結構,而非實現的細節。而在項目中,物件組合除了包括對象本身,還可能體現成元素的數組或其他形式的集合。
在 UML 模型中,組合方式的描述取決於我們希望表現的物件之間的關係。以下四種方法是 UML 中用以描繪物件組合關係的主要工具:
在 UML 中,屬性代表類別的特徵,通常在類別的定義中以變數的形式呈現。這些屬性幫助定義一個物件狀態的主要特徵,然而它們不構成複合關係。
關聯代表類別之間的語義關係。它通常被表示為相關類別之間的一條實線。這種關係並不強烈,且可以是雙向的,表示兩者之間可以互相訪問。
聚合是一種特定的關聯,描繪整體與部分之間的聯繫,強調這是相對弱的“擁有關係”。
例如,假設一所大學擁有數個系部,而這些系部分別有許多教授。這裡,系部與教授之間的關係是一種聚合,而大學則是一種排他的擁有關係。
組合是一種更強烈的聚合,它表示強烈的“擁有關係”。當組合物件被刪除時,其所擁有的所有部分也一併被刪除。
此類關係的例子可見於一個汽車(整體)與它的輪胎(部分)之間的關係。當汽車被銷毀時,所有的輪胎也不再存在,顯示出組合的一個核心屬性。
用這些 UML 方法來描繪物件之間的關係,不僅有助於我們理解系統設計的邏輯,也讓開發過程中的各個階段有了明確的參考。當你在考慮如何使用這些工具來優化你的設計時,你有沒有想過,物件之間的這些隱秘關係如何影響整個系統的穩定性與擴展性呢?