1. 程式人生 > >什麼是UML,UML類圖

什麼是UML,UML類圖

1.什麼是UML?

       UML是統一建模語言,是一種視覺化的面向物件建模語言,是一種用來對真實世界物理進行建模的標準標記,用圖形方式表現典型的面向物件系統的整個結構。它的作用域不侷限於支援面向物件的分析與設計,還支援從需求分析開始的軟體開發的全過程。

  UML的概念包括了UML語義(Semantics)和UML表示符(Notation)兩個部分。UML語義定義了靜態模型和動態模型。結構模型強調系統的物件結構,入物件的類、介面、屬性和關係;行為模型關注的是系統物件的行為動作,如物件的方法、互動、協作和狀態。UML表示符為開發者或開發工具使用這些圖形符號和文字語法為系統建模提供了標準。重要內容由9種圖來定義,包括用例圖、類圖、物件圖、狀態圖、構件圖、部署圖、協作圖、互動序列圖、活動圖。

      UML的特點是:

(1)UML統一了各種方法對不同型別的系統、不同開發階段以及不同內部概念的不同觀點,從而有效地消除了各種建模語言之間不必要的差異,它實際上是一種通用的建模語言。

      (2)UML建模能力比其他面向物件建模方法更強。它不僅適合於一般系統的開發,而且對並行、分散式系統的建模尤為適宜。

      (3)UML是一種建模語言,而不是一個開發過程

     UML的構成是:

2.UML圖之類圖

怎麼畫類圖?用什麼工具?

使用工具:Visio或者processon線上作圖

在類圖中一共包含了以下幾種模型元素,分別是:類(Class)、介面(Interface)以及類之間的關係。

2.1類(Class)

  在面向物件程式設計中,類是對現實世界中一組具有相同特徵的物體的抽象。

          

2.2 介面(Interface)                                                                                                                                                            

  介面是一種特殊的類,具有類的結構但不可被例項化,只可以被實現(繼承)。在UML中,介面使用一個帶有名稱的小圓圈來進行表示。

                       

2.3、類圖中關係(relation)

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

1. 泛化(Generalization)

【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行為。

例如:老虎是動物的一種,即有老虎的特性也有動物的共性。

【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

                                                       

  2. 實現(Realization)

【實現關係】:是一種類與介面的關係,表示類是介面所有特徵和行為的實現.

【箭頭指向】:帶三角箭頭的虛線,箭頭指向介面。

               

3.關聯(Association)

【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,

丈夫與妻子關聯可以是雙向的,也可以是單向的。

雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。

【程式碼體現】:成員變數

【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者

                         

上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。

但學生與某課程間的關係為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。

下圖為自身關聯:

                                                    

 4.聚合(Aggregation)                         

【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。

如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。

聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。

【程式碼體現】:成員變數

【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

                                       

5.組合(Composition)

【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。

如公司和部門是整體和部分的關係,沒有公司就不存在部門。

組合關係是關聯關係的一種,是比聚合關係還要強的關係,

它要求普通的聚合關係中代表整體的物件負責代表部分的物件的生命週期。

【程式碼體現】:成員變數

【箭頭及指向】:帶實心菱形的實線,菱形指向整體

                                                      

6. 依賴(Dependency)

【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,

所以要儘量不使用雙向的互相依賴.

【程式碼表現】:區域性變數、方法的引數或者對靜態方法的呼叫

【箭頭及指向】:帶箭頭的虛線,指向被使用者

                       

各種關係的強弱順序:

泛化(類與繼承關係) = 實現(類與介面關係) > 組合(整體與部分的關係) > 聚合(整體與部分的關係) > 關聯(擁有的關係) > 依賴(使用的關係

下面這張UML圖,比較形象地展示了各種類圖關係: