紅知博客

          知其然,亦知其所以然
          posts - 32, comments - 35, trackbacks - 0, articles - 0

          UML 知識:關聯--依賴、組合--聚合

          Posted on 2007-09-27 17:01 紅子 閱讀(8306) 評論(5)  編輯  收藏 所屬分類: 軟件工程UML學習設計模式

          關聯--依賴、組合--聚合   聯系與區別:

          依賴是比關聯弱的關系
          ,關聯代表一種結構化的關系,體現在生成的代碼中,以java為例:  
            若類A單向關聯指向類B,則在類A中存在一個屬性B   b。  
            若類A依賴類B,則不會有這個屬性,類B的實例可能存在于某個方法調用的參數中,或某個方法的局部變量中。


          例如代碼:

               依賴----存在于某個方法調用的參數中,或某個方法的局部變量中。

          Person類與Screwdriver類的依賴關系

          [代碼表現]

          public class Person{   
              /** 擰螺絲 */  
              public void screw(Screwdriver screwdriver){   
                  screwdriver.screw();   
              }   
          }   

              關聯:---存在一個屬性

          公司(Company)和員工(Employee)的關聯關系

          [代碼表現]
          public class Company{   
              private Employee employee;   
              public Employee getEmployee(){   
                  return employee;   
              }   
              public void setEmployee(Employee employee){   
                  this.employee=employee;   
              }   
              //公司運作   
              public void run(){   
                  employee.startWorking();   
              }   
          }  

              
              聚合: 空心菱形加實線箭頭表示
           表示C9聚合C10,但是C10可以離開C9而獨立存在(獨立存在的意思是在某個應用的問題域中這個類的存在有意義。這句話怎么解,請看下面組合里的解釋)。
           同構性,主體和部分不具有生命期的一致性

          課程組可由多個學生組成,課程組撤消了,學生還活得好好的,這是聚合。


              組合(也有人稱為包容):一般是實心菱形加實線箭頭表示
           異構性,部分和主體具有生命期上的一致性

          表示的是C8被C7包容,而且C8不能離開C7而獨立存在。但這是視問題域而定的,例如在關心汽車的領域里,輪胎是一定要組合在汽車類中的,因為它離開了汽車就沒有意義了。但是在賣輪胎的店鋪業務里,就算輪胎離開了汽車,它也是有意義的,這就可以用聚合了。在《敏捷開發》中還說到,A組合B,則A需要知道B的生存周期,即可能A負責生成或者釋放B,或者A通過某種途徑知道B的生成和釋放。

          組合的例子:你顯示屏上的瀏覽器窗口,關閉瀏覽器,上面的按紐死掉不見了,這是組合(再打開一個瀏覽窗口,按紐已經不是原來的了)。

           


          Feedback

          # re: UML 知識:關聯--依賴、組合--聚合  回復  更多評論   

          2007-09-28 16:25 by 千里冰封
          一直想學UML,但是都沒有學好

          # re: UML 知識:關聯--依賴、組合--聚合  回復  更多評論   

          2008-04-21 22:28 by ROTAPPLE
          你沒解釋關聯.

          # re: UML 知識:關聯--依賴、組合--聚合  回復  更多評論   

          2008-04-22 12:54 by rotApple
          依賴: 必須要那個類來在一個方法里面使用.
          關聯: 我有你,你也有我. 或單向, 而且彼此作為彼此的主要操作對象.
          聚合: 生命期, 不同時死亡
          組合: 生命期, 同時死亡

          以上是我的理解, 但我覺得我理解得太片面了. 而且我對依賴和關聯的理解總是很模糊, 請博主教教我好嗎? 我的MSN:rot-apple@hotmail.com我的郵箱:ken-chef@163.com

          如果可能的話希望可以收到你的郵件, 十分感謝!

          # re: UML 知識:關聯--依賴、組合--聚合  回復  更多評論   

          2009-08-04 10:53 by mamajinco
          看完這個 徹底蒙了
          因為我覺得你把有的概念弄混了

          # re: UML 知識:關聯--依賴、組合--聚合  回復  更多評論   

          2011-11-24 00:27 by caoshengquan
          關聯關系是統稱,關聯關系分組合和聚合,
          其中聚合表示has-a的關系,組合是contains-a的關系。即聚合只是簡單的包含,組合是強關聯,必須包含。
          例如人和大腦就組合,人和衣服就是聚合

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          我要啦免费统计
          主站蜘蛛池模板: 丰都县| 闽清县| 康定县| 米脂县| 肃南| 信宜市| 镇江市| 刚察县| 黄冈市| 滨海县| 隆回县| 洛川县| 石家庄市| 长葛市| 扎鲁特旗| 阳山县| 洛浦县| 贡觉县| 蓬溪县| 宣化县| 富阳市| 松原市| 安丘市| 阿拉善盟| 徐水县| 丰宁| 比如县| 十堰市| 额济纳旗| 区。| 绥宁县| 内丘县| 济源市| 临汾市| 宾阳县| 八宿县| 镇坪县| 车致| 临泉县| 广宁县| 河池市|