UML基礎之組合與聚合關係

UML基礎之關係

UML是統一建模語言([Unifried Modeling Language][6])的縮寫。最初用於描述複雜的軟件和非軟件系統的行爲。UML伴隨着面向對象的概念和方法而生。它本身不是一種編程語言,但通過構建UML圖能夠幫助我們很輕鬆地使用各種語言編寫實際代碼(基本在面嚮對象語言中使用如:java,c++,C#)。

面向對象的一些核心概念:

  • 對象
  • 抽象
  • 封裝
  • 繼承
  • 多態
    它定義了一種能夠具有多種形式的機制。基本上有兩種類型的多態 性:編譯時(也就是早期綁定)和運行時(後期綁定)。
    在編譯時多態性中,對象在編譯時知道要實現多態性。函數重載是在編譯時實現的多態性。編寫重載方法時應該使用相同的名稱和不同的參數。如:對兩個或者三個數字進行加法(sum)運算,而參數的數量由用戶調用時根據需要傳遞,這樣程序員就需要創建2個同樣爲sum的方法,帶有2個或者3個參數。
    在運行時多態性中,對象本身不知道在編譯時需要實現多態性,而是在運行時需要實現相應的屬性和方法。是通過對父類函數重寫或者說基於繼承的多態性來實現的。

關係

關係是UML中非常重要的構造塊,顯示元素之間是如何相互關聯的,這種元素之間的聯繫也能反映軟件應用的整體功能。主要包含以下不同種類的關係。(這是我用visio畫的4種關係圖表示:複合即組合)
這裏寫圖片描述

  • 依賴

    依賴關係定義了不同對象之間相互影響的關係。它描述了依賴的對象和依賴關係的方向。
    依賴關係描述的主要內容是當兩個元素之中的一個發生變化,另外一個也會相應的發生變化。由如上圖所示虛箭頭表示。

  • 關聯
    關聯關係描述了UML圖中元素的關聯方式。簡單的說,描述了多少個元素正在參與。關聯關係在類之間通過一個指向關聯方向的箭頭表示。如果兩端都是則是雙向關聯。

    //Test與Bar類存在關聯關係
    public class Test{
      public void doSomething(){
        System.out.println(Bar.doSomething());
      }
    }
    //Message類和Person類存在關聯關係
    public class Message{
       private Person per;
       public Message(Person per){
         this.per=per;  
       } 
    }
依賴關係和關聯關係的區別?
  當我們將對某個類的引用作爲當前類特定操作和函數的一部分時,通常會使用依賴關係。使用依賴關係時,你需要意識到依賴關係中會調用引用類中的某個API,而且對引用類的任何修改必然會破壞當前類。依賴關係是由依賴類開始到獨立類的一條虛線箭頭來表示的。在依賴關係中通常沒有多個依賴共存的情況,都是一對一的關係。
  關聯關係表示的是一個實例向另一個實例發送消息的能力。這通常由指針或引用實例變量實現。
  組合關係是一種特殊的關聯關係類型,代表類之間一種非常強烈的從屬關係。例如上圖,ClassA是整體類,ClassB是A的一部分,使用實心菱形來表示。組合關係描述了類之間的包含關係。
  //A類是B,C類的組合
  public class A{
  private B b;
  private C c;
  public A(){
    this.b=new B();
    this.c=new C();
  }  
  //刪除了A,則B,C,也會刪除,因爲是有A構造函數創建的B,C

在聚合關係中,整體類要比部分類起到更重要的作用,但這兩個類不是相互依存的,我們使用空心菱形表示一個簡單的聚合關係。聚合關係描述類之間存在部分和整體的關係。

    //A是B和C的聚合
   public class A{
     private B b;
     private C c;
     public A(B b,C c){
     this.b=b;
     this.c=c;
     } 
   }
   //如果對A類的刪除並不需要刪除B,C。
比如:一個人有手,腳,心臟等,這就是組合。
一個人有房子,車子,計算機,這就是聚合關係。
 - 聚合關係是一種弱關聯,對象能夠彼此進行獨立創建。
 - 組合關係是一種強關聯,部分對象在其他對象中創建。
 - 在聚合關係中對象可以彼此獨立存在
  • 泛化
    泛化關係描述了對象世界中的繼承關係,也就是父類與子類的關係。用空心箭頭表示,箭頭指向的一端表示父元素,另一端則表示子元素。
  • 擴展

UML圖
主要有兩種基本分類:靜態結構圖與動態行爲圖;
四種靜態結構圖如下:
-類圖
-對象圖
-組件圖
-部署圖

UML具有以下5種類型的動態行爲圖:
-用例圖
-順序圖
-協作圖
-狀態圖
-活動圖

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