UML基礎篇

摘自網上一些文章。

 

1.UML——統一建模語言(Unified Modeling Language),UML的目標之一就是爲開發團隊提供標準通用的設計語言,以便更有效地開發和構建計算機應用。

對象建模技術是進行面向對象分析和設計的基礎。

通過面向對象分析和設計,就能得出目標系統的對象、類以及它們之間關係的完整結構信息,爲編寫代碼打好基礎。

 

2.UML的圖可劃分爲如下三種類型。

  • 靜態圖(static diagram):描述了那些不發生變化的軟件元素的邏輯結構,描繪了類、對象、數據結構及其存在於它們之間的關係。
  • 動態圖(dynamic diagram):展示了在運行期間的軟件實體的變化,描繪了執行流程、實體改變狀態的方式。
  • 物理圖(physical diagram):顯示了軟件實體的不變化的物理結構,描繪庫文件、字節文件、數據文件等,以及存在於它們之間的關係。

3.常用的UML圖包括用例圖(use case diagram)、類圖(class diagram)、對象圖(object diagram)、序列圖(sequence diagram)、狀態圖(statechart diagram)、活動圖(activity diagram)、組件圖(component diagram)和部署圖(deployment diagram):

   

   

分析階段

設計階段

實現階段

靜態圖

用例圖

ü

 

 

 

對象圖

ü

ü

 

 

類圖

ü

ü

ü

 

組件圖

 

ü

ü

 

部署圖

 

 

ü

動態圖

協作圖

ü

ü

ü

 

序列圖

ü

ü

ü

 

活動圖

ü

 

 

 

狀態圖

ü

ü

ü

物理圖

文件、數據庫等

ü

ü

ü

 

(一)用例圖

  • 用例圖的主要目的是幫助開發團隊以一種可視化的方式來理解系統的功能需求
  • 用例圖一般用於表示用例的組織關係,要麼是整個系統的全部用例,要麼是完成具體功能(例如,所有安全管理相關的用例)的一組用例
  • 在用例圖中,用橢圓來表示用例,並將用例的名稱放在橢圓的中心或橢圓下面的中間位置。人形符號用來表示角色(用戶)。角色和用例之間的關係使用簡單的線段來描述,表示角色可以操作此用例。
  • 在用例圖中,用一個方框來表示系統的邊界。所有系統用例都放在框內,所有動作者都位於框外。動作者和用例之間用直線相連。方框內的每一件事物都是系統的一 部分,方框外的每一件事物都是系統的外部。用例圖也可以表示方框內的系統用例之間的關係,最常見的是“使用關係”,用帶箭頭的直線來表示,箭頭指向被使用 的用例。還有一種關係是擴展關係,用來表示繼承。
  • 用例圖不會列出系統不能完成的功能。如果在用例圖中提供清楚的、簡要的用例描述,項目贊助商就能很容易地看出系統是否提供了必需的功能。

(二)類圖和對象圖

  • 類圖表示不同的實體(人、事物和數據)如何彼此相關,顯示了系統的靜態結構。
  • 類圖是一個分爲三個部分的矩形。最上面的部分顯示類的名稱,中間部分顯示類的屬性,最下面的部分顯示類的操作(或者說“方法”)。實際上,最常用、最簡單的類圖就是一個在裏面顯示了類名的長方形,因爲在UML中,大多數類只要有一個能夠清楚表達的命名就可以了。
  • 在類名部分還可以顯示類的構造類型。類的構造型顯示在一對雙角括符號“« »”之間,經常放在類的名稱上面。常見的構造類型包括實現類(直接顯示類名)、接口(在類名上面顯示 «interface»),以及工具類(在類名上面顯示 «utility»)。如果類名用斜體表示,或者在類名下面標上{abstract},就表示這個類是一個抽象類。
  • 在屬性和方法的前面有一個字符用來表示屬性或方法的作用域,它們的意義如下:
    • “-”表示屬性或方法是私有的(private);
    • “#”表示屬性或方法是保護的(protected);
    • “+”表示屬性或方法是公用的(public)。
  • 緊接在屬性或方法的參數名稱的冒號(:)號之後,顯示了屬性的類型或方法的參數的類型。方法的返回值類型顯示在方法後面的冒號之後。
  • 下圖顯示了一個類Person的類圖,它對應的類的C#源代碼如下:

    Person

    +name: string

    +sex: char

    -age: int

    +Work(in type: string): void

    +Person(in name: string, in sex: char, in age: int): void

    +Speak(): void

    +Eat(): voi

    類圖示意

  • 對象圖:用來表示類的實例化對象。
  • 對象圖用一個兩層的矩形來表示,上層標識對象名和類名,下層標識對象的實例化屬性值。下面的代碼將創建一個Person類的對象mary:

    Person mary = new Person("Mary", 'F', 24);

    對象mary的對象圖如下圖所示。

    mary: Person

    name: string   ="Mary"

    sex: char      ='F'

    age: int       =2

    對象圖示例

  • 在一個系統中,類之間存在多種關係,如下所示。

    — 繼承(inheritance):繼承是指一個類從其父類派生而來,繼承了父類的屬性和方法。基於類的繼承叫做一般化(generalization),基於接口的繼承,叫做實現(realization)。

    — 關聯(association):類之間的關聯大多用來表示變量實例持有對其他對象的引用,這種關係是半永久的,但沒有包含關係。

    — 依賴(dependency):依賴是不同類的實例之間的暫時關係。

    — 聚合(aggregation):聚合是關聯的一種特殊形式,它意味着一種整體/部分(whole/part)的關係,但是部分也可以作爲其他整體的組分,而且部分和整體之間也沒有生命期的依賴。

    — 組合(composition):組合是聚合的一種特殊形式,組合的關聯性比聚合更強,部分只能作爲唯一的一個整體的部分,而且部分的生命週期依賴於整體的生命週期。

  • UML類圖對這些關係的表示方法如下圖所示。具有關聯、聚合和組合關係的兩個對象之間可能是沒有數量關係的一種聯繫,也可能存在數量關係,比如1對1(不標識)、0個或1個(標識爲0…1)、0個或多個(標識爲0…*或0…n )、1個或多個(標識爲1…*或1…n )或者確切的數字(直接標識數字)。
  • UML類圖之間的關係表示方法

  • 下圖顯示了一個包含了圖6-2中的對象的類圖。其中包括一個繼承關係和兩個關聯關係。CDSalesReport類繼承自Report類。一個 CDSalesReport類與一個CD類關    聯,但是CD類並不知道關於CDSalesReport類的任何信息。CD類和Band類都彼此知道對方,兩 個類彼此都可以與一個或者多個對方類相關聯。
  • 下圖顯示了一個包含多種關係的類圖的另一個例子。Person類實現了IHuman接口,Author類繼承了Person類;Book類與 Author類之間的關聯是1對多的,即一本書可能有一個或多個作者;Person讀書,這是一種暫時的單向依賴;Book由一個或多個Page組成,每 一個Page只能作爲一本Book的一部分,這是一種組合關係;Bookshelf裏可以不放或者放多本Book,Book也可以放在其他的 Bookshelf中,Bookshelf的存在並不能影響Book的存在性,這是一種聚合關係。包含關係的類圖

  • 一個包含多種關係的類圖

  • UML與源代碼

    UML是一種設計語言,它的目的不是表現細節,而是表現結構,僅僅展示必要的細節。因此,UML不可能與源代碼一一對應,只存在結構上的對應關係。作爲一種參考,下面列出了上圖中的類圖的C#源代碼:

(四)序列圖

  • 序列圖顯示具體用例(或用例的一部分)的詳細流程。它幾乎是自描述的,並且顯示了流程中不同對象之間的交互關係,同時還可以很詳細地顯示對不同對象的各種調用。
  • 更新中......

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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