類之間有著各種各樣的關(guān)系, 使用UML的類圖猜敢,可以幫助我們設計橄镜、梳理各個類之間的關(guān)系
實例
類之間的關(guān)系
- 泛化 generalization
- 實現(xiàn) realize
- 依賴 dependency
- 關(guān)聯(lián) association
- 聚合 aggregation
- 組合 composition
泛化(繼承inheritance)
空心箭頭的實線
實現(xiàn)(接口繼承)
空心箭頭的虛線
依賴
一個類A使用到了另一個類B," ... uses a ...",被依賴的對象只是作為一種工具在使用,而并不持有對它的引用。
表現(xiàn)在代碼層面,為類B作為參數(shù)被類A在某個method(方法)中使用锌雀。
箭頭虛線
關(guān)聯(lián)
兩個類之間夯辖、或類與接口之間一種強依賴關(guān)系,是一種長期的穩(wěn)定的關(guān)系," ... has a ..."
在代碼層面上,被關(guān)聯(lián)的類以類屬性的形式出現(xiàn)在關(guān)聯(lián)類中,也可能是關(guān)聯(lián)類引用了一個類型為被關(guān)聯(lián)類的全局變量十嘿。
實線
*沒有箭頭表示相互知道,有箭頭表示單方面知道
聚合
聚合
是表示整體與部分的一類特殊的關(guān)聯(lián)關(guān)系,是弱的包含" ... owns a ..." 關(guān)系,成分類可以不依靠聚合類而單獨存在,可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享
班級由學生組成(班級知道學生,學生不知道班級)
空心菱形箭頭實線
組合
組合
關(guān)系,是一類強的整體與部分的包含關(guān)系" ... is a part of ..."。成分類必須依靠合成類
而存在屈嗤。整體與部分是不可分的,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束环础。合成類
完全擁有成分類
,合成類
負責創(chuàng)建瘫寝、銷毀成分類別。
實心菱形箭頭實線
關(guān)聯(lián)、聚合祸穷、組合的差異
當一個類作為另一個類某個方法的參數(shù)時,為關(guān)聯(lián)
。
兩者的差別主要描述了子類的生命周期的不同愿棋。組合
關(guān)系中,一旦父類被銷毀子類也會隨之銷毀招盲;聚合
關(guān)系中,子類的生命周期與父類獨立。
例如,一個大學包含若干個系(如化學系),每個系由若干名教授算谈。如果大學撤銷,這些系也就不復存在了,但這些教授仍會繼續(xù)存在涩禀。還需注意,一名教授可以在不同系甚至不同學校兼職,而一個系不能屬于兩所大學。所以,大學與系之間是組合
關(guān)系,而系與教授是聚合
關(guān)系濒生。