資源描述:
《依賴關(guān)聯(lián)組合聚合的區(qū)別》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、對于依賴和關(guān)聯(lián),網(wǎng)上大部分都是流行下面這篇文章的說法,自己對于它們之間的區(qū)別還是不太了解,同時系統(tǒng)結(jié)構(gòu)中各個層之間是相互依賴還是相互關(guān)聯(lián),還是分不清。打算先看看寫寫代碼,然后再體會體會。轉(zhuǎn):依賴和關(guān)聯(lián)的區(qū)別首先類之間的關(guān)系從宏觀上可以分為:關(guān)聯(lián)、依賴、繼承(泛化),而其中關(guān)聯(lián)又有兩種特例:聚合和組合,不過在UML2.X中聚合和組合合成一種關(guān)系了?!氖褂玫念l率來看,關(guān)聯(lián)(包括聚合和組合)關(guān)系是使用最為廣泛的;其次是依賴和繼承·關(guān)聯(lián)和依賴的區(qū)別:1.從類之間關(guān)系的強弱程度來分,關(guān)聯(lián)表示類之間的很強的關(guān)系;依賴表示類之間的較弱的關(guān)系;2.從類之間關(guān)系的時間角度來分,關(guān)聯(lián)表示類之間的“持久”關(guān)系,
2、這種關(guān)系一般表示一種重要的業(yè)務(wù)之間的關(guān)系,需要保存的,或者說需要“持久化”的,或者說需要保存到數(shù)據(jù)庫中的。比如學生管理系統(tǒng)中的Student類和Class(班級)類,一個Student對象屬于哪個Class是一個重要的業(yè)務(wù)關(guān)系,如果這種關(guān)系不保存,系統(tǒng)就無法管理。另外,依賴表示類之間的是一種“臨時、短暫”關(guān)系,這種關(guān)系是不需要保存的,比如Student類和StuEditScreen(學生登錄界面)類之間就是一種依賴關(guān)系,StuEditScreen類依賴Student類,依賴Student對象的信息來顯示編輯學生信息。3.設(shè)計類之間的關(guān)系是遵循的原則:首先判斷類之間是否是一種“關(guān)聯(lián)”關(guān)系,若不
3、是再判斷是否是“依賴關(guān)系”,一般情況下若不是關(guān)聯(lián),就是依賴關(guān)系4.依賴一般情況下是以下幾種情況之一:a、ClassA中某個方法的參數(shù)類型是ClassB;這種情況成為耦合;b、ClassA中某個方法的參數(shù)類型是ClassB的一個屬性;這種情況成為緊耦合;c、ClassA中某個方法的實現(xiàn)實例化ClassB;d、ClassA中某個方法的返回值的類型是ClassB;如果出現(xiàn)了上述四種情況之一,兩個類很有可能就是“依賴”關(guān)系。5.依賴關(guān)系(Dependency):是類與類之間的連接,依賴總是單向的。依賴關(guān)系代表一個類依賴于另一個類的定義。下面的例子中classA依賴與classB、C、D。java代碼
4、1.publicclassA{2.publicBgetB(Cc,Dd){3.Ee=newE();4.Bb=newB(c,d,e);5.}6.}6.關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,說明一個事物的對象與另一個事物的對象相聯(lián)系。給定一個連接兩各類的關(guān)聯(lián),可以從一個類的對象導(dǎo)航到另一個類的對象。關(guān)聯(lián)可以有方向,即導(dǎo)航。一般不作說明的時候,導(dǎo)航是雙向的,不需要在線上標出箭頭。大部分情況下導(dǎo)航是單向的,可以加一個箭頭表示。關(guān)聯(lián)在代碼中一般表示為屬性(成員變量),例如下面例子中classA與B關(guān)聯(lián)java代碼1.publicclassA{2.privateBb;3.}如果B也關(guān)聯(lián)到A,那么它們就是雙向的關(guān)聯(lián)。java
5、代碼1.publicclassB{2.privateAa;3.}2.聚合關(guān)系(Aggregation):是關(guān)聯(lián)關(guān)系的一種,是強的關(guān)聯(lián)關(guān)系。聚合是整體與個體之間的關(guān)系。如汽車類與引摯類,輪胎類之間的關(guān)系就是整體與個體的關(guān)系。與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實例變量來實現(xiàn)的。***關(guān)聯(lián)關(guān)系所涉及的兩個類是處于同一層次上的,而在聚合關(guān)系中,兩個類處在不平等的層次上的,一個代表整體,一個代表部分。(關(guān)聯(lián)與聚合僅僅從語法上是區(qū)分不開的,需要察所涉及的類之間的邏輯關(guān)系。)3.組成關(guān)系(Composition):是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系強的關(guān)系。它要求普通的聚合關(guān)系中代表的對象負責代表部分的對象的生
6、命周期,合成關(guān)系是不能共享的。代表整體的對象需要負責保持對象的存活,在一些情況下負責將代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由后者負責此對象的生命周期。換言之,*******代表部分的對象在每一個時刻只能與一個對象發(fā)生合成關(guān)系,由后者排它的負責其生命周期。