依賴(Dependency)spa
依賴能夠理解爲一個類A使用到了另外一個類B,而這種使用關係是具備偶然性的、臨時性的、很是弱的,可是B類的變化會影響到A;好比某人要過河,須要借用一條船,此時人與船之間的關係就是依賴;表如今代碼層面,爲類B做爲參數被類A在某個method方法中使用。對象
圖形表示以下:blog
代碼實現以下(C#):生命週期
(PS:企鵝依賴於氣候,一但南極春天到來,溫度小於-10度後,它們將集體遷移到北極去。)ci
關聯(Association ))it
關聯和泛化是依賴的兩種特別形式,關聯分爲單向關聯和雙向關聯,單向關聯是指某一個類中包含另外一個類的所有或一部份,而被包含的類是不知道另外一個類的存在。雙向關聯是指兩個類中互相包含或引用,它們彼此都知道對方的存在。io
用圖形表示以下(雙向關聯) :sso
PS:上圖顯示了兩個類的雙向關聯的關係,一本書能夠由多個做者編寫,一個做者也能夠編寫多本書。引用
用代碼實現以下:程序
(PS:一個做者能夠寫多本書,一樣,一本書能夠被多個做者編寫)
關聯類(Association Class)
關聯類本質上是一個類附加在一個關聯中,被用來做爲UML類來建模一種關聯關係,它有其本身的名稱,屬性和方法。然而,它所描述的屬性並不屬於關聯中的對象。好比:一個員工類與一個公司類產生一個合同類的關聯後,合同類中的簽字日期 這個屬性並不屬於員工類或公司類。
用圖形表示以下:
聚合(Aggregation)
聚合是關聯關係的一種,是強的關聯關係。聚合關係是總體和個體的關係。普通關聯關係的兩個類處於同一層次上,而聚合關係的兩個類處於不一樣的層次,一個是總體,一個是部分。同時,是一種弱的 擁有 關係。體現的是A對象能夠包含B對象,但B對象不是A對象的組成部分。具體表現爲,若是A由B聚合成,表現爲A包含有B的全局對象,可是B對象能夠不在A建立的時刻建立。
用圖形表示以下:
(PS:一個教授擁有一個班級,一個班級至少由一個學生組成:總體 ---> 個體,班級中少一個學生或多一個學生,這將不會直接影響到這種聚合關係)
組合(composition)
組合是關聯關係的一種,比聚合關係更強,它要求普通的聚合關係中表明總體的對象負責表明部分的對象的生命週期。組合關係是一種強的「擁有」關係,體現了嚴格的部分和總體的關係,部分和總體的生命週期一致。若是A由B組成,表現爲A包含有B的全局對象,而且B對象在A建立的時刻建立。
用圖形表示以下:
(PS:一臺電腦由cpu 和其它部件組成,當CPU的生命週期結束後,組合的關係將不存在,computer類的生命週期也將結束。好比:拿掉cpu,電腦將沒法再執行程序)