• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            依賴是比關聯弱的關系,關聯代表一種結構化的關系,體現在生成的代碼中,以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的生成和釋放。

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

            舉例:
            你和你的心臟之間是composition關系
            你和你買的書之間是aggregation關系
            你和你的朋友之間是association關系

            關聯和聚合的區別主要在語義上,關聯的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現上是差不多的。聚合和組合的區別則在語義和實現上都有差別,組合的兩個對象之間其生命期有很大的關聯,被組合的對象是在組合對象創建的同時或者創建之后創建,在組合對象銷毀之前銷毀。一般來說被組合對象不能脫離組合對象獨立存在,而且也只能屬于一個組合對象,例如一個文檔的版本,必須依賴于文檔的存在,也只能屬于一個文檔。聚合則不一樣,被聚合的對象可以屬于多個聚合對象,例如一個員工可能可以屬于多個公司
             
            看來大家對組合的理解沒有意義,因為他們直接有共同的lifetime ,
            甚至,被component的對象是否能夠被其他類所見需要component 對象的同意。
            association 代表引用服務,但不會永久保存引用的入口,比如,僅僅是參數引用,用完就丟棄,是最弱連接。
            aggregation 聚合代表永久引用或強引用,也許對象生成的時候就獲得了該引用。
            雖然他們直接沒有生命期的約束。但是引用對象必須處理被引用對象義務消失的意外處理。
             
            在討論聚合,關聯,組合區別,討論那么多內部類干什么?

            確實,他們的關系按強弱分有

            關聯<聚合<組合

            我看大家主要分岐在聚合和組合上。說白一點,聚合這種關系是被包含的對象的個數是 0..* 而組合是 1..*
            聚合中的被包含對象可以沒有。 而組合至少有一個。聚合是一種擁有的關系,而組合是整體與部分的關系

            舉一個簡單的例子:
            一個圖書館可以有十萬本書,也可以一本也沒有。但空的圖書館還是圖書館。這是聚合

            一個車(我們平常能看到的普通的交通工具車)有輪子,有的車是四輪子的,有的車是三輪的,自行車是二輪的,還有獨輪車,但車至少要有一個輪子,不然就不是車。這是組合關系。

             

            久久久久亚洲爆乳少妇无| 久久精品无码专区免费青青| 2020久久精品国产免费| 久久国产精品99久久久久久老狼| 91精品国产91久久久久久| 久久久久国色AV免费观看| 久久亚洲精品国产亚洲老地址| 亚洲成色www久久网站夜月| 久久综合狠狠综合久久激情 | 91麻豆国产精品91久久久| 久久国产精品久久国产精品| 亚洲中文字幕伊人久久无码| www性久久久com| 午夜精品久久久久久| 久久亚洲国产精品一区二区| 一本色道久久88综合日韩精品 | 久久精品国产亚洲一区二区三区| 伊人精品久久久久7777| 成人资源影音先锋久久资源网| 国产精品久久久久久久久久影院| 人人狠狠综合久久亚洲88| 99精品久久久久久久婷婷| 久久人人爽人人澡人人高潮AV| 久久精品亚洲日本波多野结衣| 亚洲精品tv久久久久久久久久| 久久午夜电影网| 国产成年无码久久久久毛片| 久久久久亚洲av综合波多野结衣 | 久久婷婷五月综合国产尤物app| 久久精品国产亚洲沈樵| 久久亚洲精品成人av无码网站| 欧美日韩精品久久久久| 久久婷婷色香五月综合激情| 人人狠狠综合久久亚洲| 久久99久久成人免费播放| 亚洲精品高清国产一久久| 久久亚洲国产午夜精品理论片| 国内精品伊人久久久久| 久久91精品久久91综合| 国产精品久久久久天天影视| 久久青青草原精品影院|