UML類圖關係

一、關聯

  • 雙向關聯

雙向關聯

指雙方都知道對方的存在,均可以調用對方的公共屬性和方法。            設計模式

在GOF的設計模式書上是這樣描述的:雖然在分析階段這種關係是適用的,但咱們以爲它對於描述設計模式內的類關係來講顯得太抽象了,由於在設計階段關聯關係必須被映射爲對象引用或指針。對象引用自己就是有向的,更適合表達咱們所討論的那種關係。因此這種關係在設計的時候比較少用到,關聯通常都是有向的。.net

 

  • 單向關聯

單向關聯

表示相識關係,沒有生命期的依賴,通常是表示爲一種引用。指C1知道C2,C1能夠調用C2的公共屬性和方法,C2對C1一無所知。設計

  • 自身關聯(反身關聯)

自自身關聯 

本身引用本身,帶着一個本身的引用。指針

二、聚合

聚合

當類之間有總體-部分關係時,可是部分離開總體能夠獨立存在,能夠形象的代表是一種弱關係。對象

三、組合(包含)

       組合

當類之間有總體-部分關係時,而且部分離開總體後,不能獨立存在,但具體問題還要具體分析。(部分不能離開總體,主要取決於關注點是誰)。繼承

四、依賴

依賴

指C1可能要用到C2的一些方法。也能夠這樣說,要完成C1的功能,必定要C2的方法輔助才行接口

五、泛化(繼承)

繼承

一般說兩個類存在繼承的關係,例如父和子,動物和老虎,植物和花等。

在UML建模中,對類圖上出現元素的理解是相當重要的。開發者必須理解如何將類圖上出現的元素轉換到Java中。ip

基本元素符號

1. 類(Classes)

類包含3個組成部分。ci

  • 第一個是Java中定義的類名
  • 第二個是屬性(attributes)
  • 第三個是該類提供的方法

屬性和操做以前可附加一個可見性修飾符。作用域

  • 加號(+)表示具備公共可見性
  • 減號(-)表示私有可見性
  • #號表示受保護的可見性

省略這些修飾符表示具備package(包)級別的可見性。若是屬性或操做具備下劃線,代表它是靜態的。在操做中,可同時列出它接受的參數,以及返回類型,以下圖所示:

基本元素-類

2. 包(Package)

包是一種常規用途的組合機制。UML中的一個包直接對應於Java中的一個包。在Java 中,一個包可能含有其餘包、類或者同時含有這二者。進行建模時,你一般擁有邏輯性的包,它主要用於對你的模型進行組織。你還會擁有物理性的包,它直接轉換成系統中的Java包。每一個包的名稱對這個包進行了唯一性的標識。

基本元素-包

3. 接口(Interface)

接口是一系列操做的集合,它指定了一個類所提供的服務。它直接對應於Java中的一個接口類型。接口既可用下面的那個圖標來表示(上面一個圓圈符號,圓圈符號下面是接口名,中間是直線,直線下面是方法名),也可由附加了<<interface>>的一個標準類來表示。一般,根據接口在類圖上的樣子,就能知道與其餘類的關係。

基本元素-接口 

關 系:

1. 依賴(Dependency)

實體之間一個「使用」關係暗示一個實體的規範發生變化後,可能影響依賴於它的其餘實例。更具體地說,它可轉換爲對不在實例做用域內的一個類或對象的任何類型的引用。其中包括一個局部變量,對經過方法調用而得到的一個對象的引用(以下例所示),或者對一個類的靜態方法的引用(同時不存在那個類的一個實例)。也可利用「依賴」來表示包和包之間的關係。因爲包中含有類,因此你可根據那些包中的各個類之間的關係,表示出包和包的關係。

關係-依賴 

2. 關聯(Association)

實體之間的一個結構化關係代表對象是相互鏈接的。箭頭是可選的,它用於指定導航能力。若是沒有箭頭,暗示是一種雙向的導航能力。在Java中,關聯轉換爲一個實例做用域的變量,就像圖E的「Java」區域所展現的代碼那樣。可爲一個關聯附加其餘修飾符。多重性(Multiplicity)修飾符暗示着實例之間的關係。在示範代碼中,Employee能夠有0個或更多的TimeCard對象。可是,每一個TimeCard只從屬於單獨一個Employee。

關係-關聯

3. 聚合(Aggregation)

聚合是關聯的一種形式,表明兩個類之間的總體/局部關係。聚合暗示着總體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。聚合也轉換成Java中的一個實例做用域變量。

關聯和聚合的區別純粹是概念上的,並且嚴格反映在語義上。聚合還暗示着實例圖中不存在迴路。換言之,只能是一種單向關係。

關係-聚合

4. 合成(Composition)

合成是聚合的一種特殊形式,暗示「局部」在「總體」內部的生存期職責。合成也是非共享的。因此,雖然局部不必定要隨總體的銷燬而被銷燬,但總體要麼負責保持局部的存活狀態,要麼負責將其銷燬。

局部不可與其餘總體共享。可是,總體可將全部權轉交給另外一個對象,後者隨即將承擔生存期職責。Employee和TimeCard的關係或許更適合表示成「合成」,而不是表示成「關聯」。

關係-合成

5. 泛化(Generalization)

泛化表示一個更泛化的元素和一個更具體的元素之間的關係。泛化是用於對繼承進行建模的UML元素。在Java中,用extends關鍵字來直接表示這種關係。

關係-泛化

6. 實現(Realization)

實例關係指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另外一個實體保證履行該合同。對Java應用程序進行建模時,實現關係可直接用implements關鍵字來表示。

關係-實現

相關文章
相關標籤/搜索