天天看點

學習筆記:UML類圖

一、何謂UML類圖

  類是具有相似結構、行為和關系的一組對象的描述符。類是面向對象系統中最重要的構造塊。類圖顯示了一組類、接口、協作以及他們之間的關系。UML是統一模組化語言,是一種可視化的面向對象模組化語言,是一種用來對真實世界實體進行模組化的标準标記,用圖形方式表現典型的面向對象系統的整個結構。它的作用域不局限于支援面向對象的分析與設計,還支援從需求分析開始的軟體開發的全過程。

  UML的概念包括了UML語義(Semantics)和UML表示符(Notation)兩個部分。UML語義定義了靜态模型和動态模型。結構模型強調系統的對象結構,入對象的類、接口、屬性和關系;行為模型關注的是系統對象的行為動作,如對象的方法、互動、協作和狀态。UML表示符為開發者或開發工具使用這些圖形符号和文本文法為系統模組化提供了标準。重要内容由9種圖來定義,包括用例圖、類圖、對象圖、狀态圖、構件圖、部署圖、協作圖、互動序列圖、活動圖。

二、UML類圖的特點

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

(2)UML模組化能力比其他面向對象模組化方法更強。它不僅适合于一般系統的開發,而且對并行、分布式系統的模組化尤為适宜。

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

三、UML類圖中的常用符号

下圖是常用來進行學習的UML類圖:

學習筆記:UML類圖
 首先我們從最簡單的類結構說起,即動物的那個矩形框
學習筆記:UML類圖

表示一個類,一般的類圖會分為三層,第一層表示類的名字、第二層表示類的特性(通常是字段和屬性)、第三層表示類的操作 (常用的是方法和行為)

同時我們注意到前面的符号,表示類的權限:‘+’ 表示public、‘-’表示private,‘#’表示protect

我們可以看到,在左下角的飛翔和有一個接口圖,其主要差別就是頂端有《interface》

接口還有另一種表示方法,俗稱棒棒糖表示法:

學習筆記:UML類圖

 圓圈旁邊為接口名稱,接口方法在實作類中出現

而繼承關系則用空心三角星+實線來表示,實作接口則用空心三角形+虛線來進行表示

學習筆記:UML類圖

當一類需要知道另一個類的時候,則需要用關聯關系來進行表示,關聯關系用實作+箭頭來進行辨別

class Penguin : Bird{

private Climate climate; // 在企鵝對象中,引用到氣候climate對象

}

 我們再來看大雁和雁群這兩個類,大雁是群居動物,每隻大雁都屬于一個雁群,一個雁群可以包含多隻大雁,它們之間滿足聚合關系

聚合關系:表示一種弱擁有,展現的是A對象可以包含B對象,但B對象不是A對象的一部分

學習筆記:UML類圖

class WideGooseAggreate{
    private WideGoose[] arrayWideGoose;//在雁群類中,有大雁數組對象
}      

合成則表示一種強的擁有關系(Composition,也可以翻譯成組合),展現了嚴格的部分和整體的關系,部分和整體的生命周期一樣。

鳥和翅膀就是組合關系,因為他們之間是部分和整體的關系,并且具有相同的生命周期,其用實心的菱形+實作箭頭來表示,除此之外,在這條線上還有幾個數字,我們稱之為基數,用來表示一段的類可以具有幾個執行個體。

學習筆記:UML類圖
class Bird{
    private Wing wing;
    public Bird(){
        wing = new wing();//bird 和 wing 同時生成
    }
}      

而動物則有幾大特征,如新陳代謝等,動物需要有生命力、需要氧氣、水以及食物。也就是說,動物依賴于氧氣和水,他們之間是依賴關系用虛線箭頭來進行辨別。

學習筆記:UML類圖

可能剛開始對UML類圖并不熟悉,需要多看和了解,應該就很容易掌握。