UML類圖關係(泛化 、實現、依賴、關聯、聚合、組合)

  在UML類圖中,常見的有以下幾種關係: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

1.泛化(Generalization)
  【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。接口也可以用該關係。
  【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

  【代碼關係】:

public class Father {
}

public class Son extends Father {
}

2.實現(Realization)
  【實現關係】:是一種類與接口的關係,表示類是接口所有特徵和行爲的實現.
  【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口.(有些畫法接口爲一個圈,實現的類之間是一條直接)
    
  【代碼關係】:

public interface People {
}

public class Man implements People{
}

3. 組合(Composition)
  【組合關係】:是整體與部分,是“has-a”關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。
  組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。
  【箭頭及指向】:帶實心菱形的實線,菱形指向整體
  
  【代碼關係】:

/**
 * 大雁個體
 */
public class Goose {
    public Wing wing;

    public Goose() {
        wing = new Wing();
    }
}

public class Wing {
}

4.聚合(Aggregation)
  【聚合關係】:是整體與部分,是“contains-a”關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。
  聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。
  【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
  
  【代碼關係】: 

/**
 * 大雁羣
 */
public class GooseGroup {
    public Goose goose;

    public GooseGroup(Goose goose) {
        this.goose = goose;
    }
}

5. 關聯(Association)
  【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
  【代碼體現】:成員變量
  【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者
  
  上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係爲單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。
  也有可能自身關聯。

6.依賴(Dependency)
  【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.
  【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
  【箭頭及指向】:帶箭頭的虛線,指向被使用者
  

  各種關係的強弱順序:
   泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

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