依賴與關聯

    1.  首先類之間的關係從宏觀上可以分爲:關聯、依賴、繼承,而其中關聯又有兩種特例:聚合和組合,不過在UML2.X中聚合和組合合成一種關係了。
  1.  從使用的頻率來看,關聯(包括聚合和組合)關係是使用最爲廣泛的;其次是依賴和繼承
  2. 關聯和依賴的區別:  
    1. 從類之間關係的強弱程度來分,關聯表示類之間的很強的關係;依賴表示類之間的較弱的關係;
    2. 從類之間關係的時間角度來分,關聯表示類之間的“持久”關係,這種關係一般表示一種重要的業務之間的關係,需要保存的,或者說需要“持久化”的,或者說需要保存到數據庫中的。比如學生管理系統中的Student類和Class(班級)類,一個Student對象屬於哪個Class是一個重要的業務關係,如果這種關係不保存,系統就無法管理。另外,依賴表示類之間的是一種“臨時、短暫”關係,這種關係是不需要保存的,比如Student類和StuEditScreen(學生登錄界面)類之間就是一種依賴關係,StuEditScreen類依賴Student類,依賴Student對象的信息來顯示編輯學生信息。
    3. 設計類之間的關係是遵循的原則:首先判斷類之間是否是一種“關聯”關係,若不是再判斷是否是“依賴關係”,一般情況下若不是關聯,就是依賴關係
    4. 依賴一般情況下是以下幾種情況之一:a、ClassA中某個方法的參數類型是ClassB;這種情況成爲耦合;b、ClassA中某個方法的參數類型是ClassB的一個屬性;這種情況成爲緊耦合;c、ClassA中某個方法的實現實例化ClassB;d、ClassA中某個方法的返回值的類型是ClassB;如果出現了上述四種情況之一,兩個類很有可能就是“依賴”關係。
    5. 依賴關係(Dependency):是類與類之間的連接,依賴總是單向的。依賴關係代表一個類依賴於另一個類的定義。下面的例子中class A 依賴與class B、C、D。
      另外,返回類型如果爲某個class,也應該是種依賴關係。

    6. java 代碼

    7.  關聯是一種結構關係,說明一個事物的對象與另一個事物的對象相聯繫。給定一個連接兩各類的關聯,可以從一個類的對象導航到另一個類的對象。
      關聯可以有方向,即導航。一般不作說明的時候,導航是雙向的,不需要在線上標出箭頭。大部分情況下導航是單向的,可以加一個箭頭表示。
      關聯在代碼中一般表示爲屬性(成員變量),例如下面例子中 class A與B關聯.java 代碼

 public class A{  

    private B b;  

}  

如果B也關聯到A,那麼它們就是雙向的關聯。

java 代碼

  1. public class B{  
  2.     private A a;  

8.  聚合關係(Aggregation):是關聯關係的一種,是強的關聯關係。聚合是整體與個體之間的關係。如汽車類與引摯類,輪胎類之間的關係就是整體與個體的關係。 與關聯關係一樣,聚合關係也是通過實例變量來實現的。***關聯關係所涉及的兩個類是處於同一層次上的,而在聚合關係中,兩個類處在不平等的層次上的,一個代表整體,一個代表部分。(關聯與聚合僅僅從語法上是區分不開的,需要察所涉及的類之間的邏輯關係。

9.  組成關係(Composition):是關聯關係的一種,是比聚合關係強的關係。它要求普通的聚合關係中代表的對象負責代表部分的對象的生命週期,合成關係是不能共享的。 代表整體的對象需要負責保持對象的存活,在一些情況下負責將代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命週期。換言之,*******代表部分的對象在每一個時刻只能與一個對象發生合成關係,由後者排它的負責其生命週期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章