UML類關系: 依賴、關聯、聚合、組合、繼承、實現
1. 依賴
Class B { static void a(){...} }Class A { // a. 類A的方法中使用類B作為參數 void a(B b){...}
// b. 類A的方法中使用類B的對象作為局部變量 void b(){ B b = new B(); }
// c. 類A的方法中使用類B的靜態方法 void c(){ B.a(); } }</pre>以上特征表明類A依賴類B, 如果類B發生變化那么就可能要求類A也發生變化.
2. 關聯Class B { ... }Class A { B b0 = new B(); static B b1 = new B(); }</pre>類B作為類A的一個屬性存在(成員/靜態), 關聯可以單向/雙向的.
3. 聚合/組合Class B { ... }Class A { private B b; public B getB(){ return b; } public void setB(B b){ this.b = b; } }</pre>聚合與組合的代碼表現形式是一樣的,僅僅具有語義上的區別。
聚合與組合其實都是關聯的特例,都是整體和部分的關系。他們的區別在于聚合的兩個對象之間是可分離的,具有各自的生命周期。而組合往往表現為一種唇齒相依的關系。聚合:一種容納或者包含的關系,如同機場和飛機,汽車和輪胎的關系。
組合:也可稱之為強聚合,整體和部分是不可分的,整體的生命周期結束時也就是部分的生命周期到頭時。如桌子和桌子腿的關系。
4. 繼承/實現
以下省略1W字......
一般情況下,當某個類被當作參數傳遞并且被當作結果返回的時候,或者被當作某個方法內的臨時變量使用的時候,可以運用依賴關系,使用關聯來表示一個擁有關系,而不是整體-部分關系。使用聚合來表示一個動態的整體-部分關系,而是用組合來表示一個靜態的整體-部分關系。但是需要指出的是,所謂“關系”只是在某個問題域才有效,離開了這個問題域,可能這些關系就不成立了。
本文由用戶 灬猜想灬 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!