posts - 8, comments - 13, trackbacks - 0, articles - 43
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          聚合與組合的區(qū)別?

          Posted on 2010-08-01 14:17 kangaroo 閱讀(27141) 評論(5)  編輯  收藏

          記得在當時學習uml總是不好分清聚合與組合的關系,找工作時特地復習了這塊的內容,結果正巧被面試官問道,這兩天又在搞這塊的內容,對聚合與組合有了更清楚的了解:

          聚合:表示兩個對象之間是整體和部分的關系,部分的生命周期可以超越整體。如電腦和鼠標,就可以用一下圖形表示:



          組合:表示兩個對象之間是整體和部分的關系,部分的生命周期不能超越整體,或者說不能脫離整體而存在。組合關系的“部分”,是不能在整體之間進行共享的。如人和眼睛的關系:

          不過,如果你要說,眼睛可以移植,是不是說可以脫離人而存在,它們就不是組合關系了?其實,UML中對象的關系都是在相應的軟件環(huán)境或實際場景下定義的,這里區(qū)別聚合和組合的關系,關鍵還是在于它們之中整體和部分的關系強、弱,以及它們之間的依附關系。如果剛才說眼睛可以移植給別人,那你也可以把它認為是聚合,這都要結合實際場景來說明。

          另外兩個比較重要的關系是關聯(lián)和依賴:
          關聯(lián):簡單的可以認為,如果一個類作為了另外一個類的屬性,那一定是關聯(lián)關系。但你要知道,聚合是一種特殊的關聯(lián),而組合又是一種特殊的聚合。一般的關聯(lián)我們認為是平級的、無整體部分關系的,如朋友關系。

          依賴:對象之間的臨時關系,臨時性體現(xiàn)在不超越方法的周期。簡單的說,在方法使用到的,如參數類,就一定是依賴關系。

          最后想說一句,實際工作中,我并沒有發(fā)現(xiàn)區(qū)分這四種關系有多么大的用處,也許自己還沒有碰到,只是覺得可能每個學習它的同學總想把它搞清楚,但實際工作中作用并不明顯。

          評論

          # re: 聚合與組合的區(qū)別?  回復  更多評論   

          2011-06-11 17:37 by 訛213213
          123

          # re: 聚合與組合的區(qū)別?  回復  更多評論   

          2012-05-17 22:44 by 歐迪佐
          對于是否完全控制對象內部,作為屬性的其他對象的生命周期,如果是強關系則控制,弱關系就由外部去控制。

          # re: 聚合與組合的區(qū)別?  回復  更多評論   

          2014-09-01 10:52 by 564+

          2

          # re: 聚合與組合的區(qū)別?  回復  更多評論   

          2014-11-07 19:48 by yrsb
          等于沒說

          # re: 聚合與組合的區(qū)別?[未登錄]  回復  更多評論   

          2015-07-28 09:07 by 111
          確實等于沒說

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


          網站導航:
           
          主站蜘蛛池模板: 渑池县| 康马县| 澄江县| 万全县| 建水县| 高尔夫| 汉川市| 太谷县| 丹寨县| 木里| 鄂州市| 花莲市| 韶关市| 敦煌市| 东台市| 临泉县| 密山市| 江源县| 邵武市| 威海市| 万载县| 竹溪县| 庐江县| 隆尧县| 保亭| 海丰县| 罗田县| 邯郸市| 资阳市| 阳山县| 社会| 台东县| 上高县| 潞城市| 嵩明县| 化德县| 伊宁市| 张家港市| 加查县| 阿拉尔市| 河间市|