UML中6大關係分析


  轉自:http://www.yongfa365.com/Item/UML-Association-Dependency-Aggregation-Composition-Realization-Generalization.html

大話設計模式上的一個圖,我用EA畫出來的:

 大話設計模式類圖

UML中的6大關係相關英文及音標:

 依賴關係

 

dependency

 

[di'pendənsi]
 關聯關係

 

association

 

 [ə,səuʃi'eiʃən]
 聚合關係

 

aggregation

 

 [ˌægrɪˈgeɪʃən]
 組合關係 composition  [,kɔmpə'ziʃən]
 實現

 

realization

 

 [,ri:əlɪ'zeɪʃən]
 泛化

 

generalization

 

 [,dʒenərəlɪ'zeɪʃən]

 

 

UML中的6大關係簡單解釋:

  1. 關聯:連接模型元素及鏈接實例,用一條實線來表示;
  2. 依賴:表示一個元素以某種方式依賴於另一個元素,用一條虛線加箭頭來表示;
  3. 聚合:表示整體與部分的關係,用一條實線加空心菱形來表示;
  4. 組成:表示整體與部分的有一關係,用一條實線加實心菱形來表示;
  5. 泛化(繼承):表示一般與特殊的關係,用一條實線加空心箭頭來表示;
  6. 實現:表示類與接口的關係,用一條虛線加空心箭頭來表示;

注意:泛化關係和實現關係又統稱爲一般關係;
總之:一般關係表現爲繼承或實現(is a),關聯關係、聚合關係、合成/組合關係表現爲成員變量(has a),依賴關係表現爲函數中的參數(use a);

轉自:http://www.cnblogs.com/ForEverKissing/archive/2007/12/13/993818.html

UML中的6大關係詳細說明:

1、關聯關係:
  含義:類與類之間的連結,關聯關係使一個類知道另外一個類的屬性和方法;通常含有“知道”,“瞭解”的含義
體現:在C#中,關聯關係是通過成員變量來實現的;
方向:雙向或單向;
圖示:實線 + 箭頭;箭頭指向被關聯的類;
舉例:“漁民”需要知道“天氣”情況才能夠出海
   //公司關聯僱員
public class Company
{
    private Employee employee;
    public Employee GetEmployee()
    {
        return employee;
    }
    public void SetEmployee(Employee employee)
    {
        this.employee = employee;
    }
    //公司運作    
    public void Run()
    {
        employee.StartWorking();
    }

}

//A關聯B
class A
{
    B b = new B();
}
class B
{
}

2、依賴關係:
  含義:是類與類之間的連接,表示一個類依賴於另外一個類的定義;依賴關係僅僅描述了類與類之間的一種使用與被使用的關係;
體現:在C#中體現爲局部變量、方法/函數的參數或者是對靜態方法的調用;
方向:單向;
圖示:虛線 + 箭頭;
舉例:人依賴於水和空氣;汽車依賴汽油
    //人划船,人依賴於船
public class Person
{
    //划船
    public void Oarage(Boat boat)
    {
        boat.Oarage();
    }


//A依賴於B
class A
{
    public void Function(B b)
    { }
}
class B
{
}

 

3、聚合關係:
  含義:是關聯關係的一種,是一種強關聯關係;聚合關係是整體和個體/部分之間的關係;關聯關係的兩個類處於同一個層次上,而聚合關係的兩個類處於不同的層次上,一個是整體,一個是個體/部分;在聚合關係中,代表個體/部分的對象有可能會被多個代表整體的對象所共享;
體現:C++中,聚合關係通過將被聚合者的(數組)指針作爲內部成員來實現的;
方向:單向;
圖示:空心菱形 + 實線 + 箭頭;箭頭指向被聚合的類,也就是說,箭頭指向個體/部分;
舉例:鴨羣與鴨子具有聚合關係;汽車由引擎、輪胎以及其它零件組成,因爲汽車壞掉了,沒有壞掉的引擎,輪胎和其他零件還可以繼續使用。

4、組合關係:
  含義:它也是關聯關係的一種,但它是比聚合關係更強的關係.組合關係要求聚合關係中代表整體的對象要負責代表個體/部分的對象的整個生命週期;組合關係不能共享;在組合關係中,如果代表整體的對象被銷燬或破壞,那麼代表個體/部分的對象也一定會被銷燬或破壞,而聚在合關係中,代表個體/部分的對象則有可能被多個代表整體的對象所共享,而不一定會隨着某個代表整體的對象被銷燬或破壞而被銷燬或破壞;
體現:在C#中,組合關係是通過成員變量來實現的;
方向:單向;
圖示:實心菱形 + 實線 + 箭頭;箭頭指向代表個體/部分的對象,也就是被組合的類的對象;
舉例:一個人由頭、四肢、等各種器官組成,因爲人與這些器官具有相同的生命週期,人死了,這些器官也掛了;

5、泛化關係:
  含義:它表示一個更泛化的元素和一個更具體的元素之間的關係;也就是通常所說的類的繼承關係;
體現:在C#中,泛化關係通過類的繼承來實現的;
方向:單向;子類繼承父類;
圖示:空心箭頭 + 實線;箭頭指向父類;
舉例:動物下面可以分爲哺乳動物,脊椎動物,爬行動物等

6、實現關係:
  含義:它指定了兩個實體之間的一份合同;即:一個實體定義一份合同,另外一個實體則保證履行該合同;
體現:在C#中,實現關係通過類實現接口來實現的,即:一個類實現某個接口;
方向:單向;子類實現接口;
圖示:空心箭頭 + 虛線;箭頭指接口向接口;
舉例:唐老鴨(對象)會說話(接口),因爲一般鴨子不會說話,所以不會將說話這個方法給一般的鴨子帶上;超人(對象)會飛(接口)

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