泛化(Generalization)關係是指,一個類或繼承了另一個類,或一個接口繼承了另一個接口。post
Java中採用extends來表示泛化(Generalization)關係。spa
實現(Realization)關係是指,一個類實現了一個或多個接口。對象
Java中採用implements來表示實現(Realization)關係。繼承
依賴(Dependency)關係也是表示類與類之間的鏈接,表示一個類依賴於另一個類的定義,依賴關係是單向的。接口
簡單理解就是類A使用到了類B,這種依賴具備偶然性、臨時性,是很是弱的關係。可是類B的變化會影響到類A。生命週期
Java中,依賴(Dependency)關係的表現爲:被依賴的類爲方法中局部變量、方法中的參數或靜態方法的調用。ci
關聯(Association)關係表示類與類之間的鏈接,它使得一個類知道另一個類的屬性和方法。io
關聯(Association)關係可使用單箭頭表示單向關聯,使用雙箭頭或者不適用箭頭表示雙向關聯,不建議使用雙向關聯。變量
關聯(Association)關係有兩個端點,每一個端點能夠有一個基數,表示這個關聯的類能夠有幾個實例。sso
關聯(Association)關係體現的是兩個類,或者類與接口之間的強依賴關係,這種關係很強烈。比依賴更強,不是偶然性的,也不是臨時性的,而是一種長期性,相對平等的關係。
Java中,關聯(Association)關係的表現爲:被關聯的類B以類屬性的形式出如今類A中,也多是關聯類A引用了被關聯類B的全局變量。
聚合(Aggregation)關係是關聯(Association)關係的一個特例,是一種強依賴關係,它在關聯(Association)關係上,強調了Has-a關係。
Has-a關係表示總體和部分是能夠分離的,他們具備各自的生命週期,部分能夠屬於多個對象,也能夠被多個對象共享。
好比計算機和CPU、公司與員工等關係。
Java中,聚合(Aggregation)關係也是使用屬性的形式來實現的,在Java語法上區分不出關聯(Association)和聚合(Aggregation)。
組合(Compostion)關係也是關聯(Association)關係的一個特例,是一種強依賴關係,比聚合(Aggregation)關係更強,強調了Contain-a關係。
它一樣體現總體與部分的關係,但此時總體與部分是不可分的,總體生命週期的結束也意味着部分生命週期的結束,反之亦然。如大腦和人類。
Java中,組合(Compostion)關係也是使用屬性的形式來實現的,在Java語法上區分不出關聯(Association)、聚合(Aggregation)和組合(Compostion)。
主要是關聯關係的細化須要注意強弱,由若到強分別是 依賴 < 關聯 < 聚合 < 組合。
組合與聚合幾乎徹底相同,惟一區別就是對於組合,「部分」不一樣脫離「總體」單獨存在,其生命週期應該是一致的。