- UML 建模、設計與分析:從新手到高手
- 夏麗華
- 3827字
- 2019-12-09 14:44:17
1.2 UML的組成
至此,我們已經對UML的發展過程有了一定了解,并且認識了UML體系結構中每層的作用。除了上述了解的UML基本概述外,還需要了解一下UML的組成。
UML的組成包括事物、關系和圖。其中,事物是UML中的重要組成部分,關系具有聯系元素的作用,而圖則是很多有相互關系的事物的組。
1.2.1 事物
UML中包括構件事物、行為事物、分組事物和注釋事物。
1.構件事物
構件事物是UML模型的靜態部分、描述概念或物理元素,主要包括類、接口、協作、用例、組件、節點和活動類。
□ 類
類是對具有相同屬性、方法、關系和語義的一組對象的抽象。一個類可以實現一個或多個接口。UML中類的符號如下圖所示。

□ 接口
接口是為類或組件提供特定服務的一組操作的集合。一個接口可以實現類或組件的全部動作,也可以實現其中的一部分。UML中的接口符號如下圖所示。

□ 協作
協作定義了交互操作。一個給定的類可能是幾個協作的組成部分,這些協作代表構成系統模式的實現。協作在UML中使用虛線構成的橢圓表示,如下圖所示。

□ 用例
用例描述系統中特定參與者執行的一系列動作。模型中的用例通常用來組織動作事物,它是通過協作來實現的。UML中使用實線橢圓表示用例,如下圖所示。

□ 組件
組件是實現了一個接口集合的物理上可替換的系統部分。UML中組件的表示如下圖所示。

□ 節點
節點是運行時存在的一個物理元素,代表一個可計算的資源,通常占用一些內存,具有處理能力。UML中節點的表示法如下圖所示。

□ 活動類
活動類是類對象有一個或多個進程或線程的類,與普通的類相似,只是該類對象代表元素的行為和其他元素同時存在。UML中活動類的表示法和類相同,只是邊框使用粗線條,如下圖所示。

2.行為事物
行為事物又稱動作事物,是UML模型中的動態部分,代表時間和空間上的動作。交互和狀態機是UML模型中兩個基本的動態事物元素,它們通常和其他結構元素、主要的類、對象連接在一起。
□ 交互
交互是一組對象在特定上下文中,為達到某種特定目的而進行一系列消息交換組成的動作。交互中組成動作對象的每個操作都要詳細列出,包括消息、動作次序和連接等。UML中使用帶箭頭的直線表示,并在直線上對消息進行標注,如下圖所示。

□ 狀態機
狀態機由一系列對象的狀態組成。在UML中,狀態機的表示法如下圖所示。

3.分組事物
分組事物是UML模型中重要的組成部分。分組事物使用的機制稱為包。包可以將彼此相關的元素進行分組。結構事物、動作事物,甚至其他分組事物都可以放在一個包中。包只存在于開發階段。UML中包的表示法如下圖所示。

4.注釋事物
注釋事物是UML中模型元素的解釋部分。在UML中,注釋事物由統一的圖形表示,如下圖所示。

1.2.2 關系
UML中,關系共分為5種,分別是關聯關系、依賴關系、泛化關系、實現關系和聚合關系。這里對它們進行簡要介紹,并講解每種關系的圖形表示。
1.關聯關系
關聯關系體現了兩個類之間,或者類與接口之間的一種依賴關系,表現為一個類似屬性的形式包含對另一個類的一個或多個對象的應用。關聯的兩端中以關聯雙方的角色和多重性標記,如下圖所示。

2.依賴關系
依賴關系描述一個元素對另一個元素的依附。依賴關系使用帶有箭頭的虛線從源模型指向目標模型,如下圖所示。

3.泛化關系
泛化關系也稱為繼承關系,這種關系意味著一個元素是另一個元素的特例。泛化關系使用帶有空心三角箭頭的直線作為其圖形表示,箭頭從表示特殊性事物的模型元素指向表示一般性事物的模型元素,如下圖所示。

4.實現關系
實現關系描述一個元素實現另一個元素。實現關系使用一條帶有空心三角箭頭的虛線作為其圖形表示,箭頭從源模型指向目標模型,表示源模型元素實現目標模型元素。實現關系表示法如下圖所示。

5.聚合關系
聚合關系描述元素之間部分與整體的關系,即表示一個整體的模型元素可由幾個表示部分的模型元素構成。聚合關系使用帶有空心菱形的直線表示,其中菱形連接表示整體的模型元素,而其他端則連接表示部分的模型元素。聚合關系表示法如下圖所示。

1.2.3 圖
每種UML的視圖都是由一個或多個圖組成的,圖就是系統架構在某個側面的表示。所有的圖一起組成系統的完整視圖。UML 2.0提供了13種不同的圖,通過它們的相互組合提供了建模系統中的所有視圖。UML中的13種圖可以歸納為下列5種類型圖。
□ 靜態圖 包含類圖、對象圖、包圖、組合結構圖。
□ 動態圖 狀態圖、活動圖。
□ 用例圖 用例圖。
□ 交互圖 順序圖、通信圖、時序圖、交互概覽圖。
□ 實現圖 組件圖、部署圖。
從應用的角度來看,當采用面向對象技術設計系統時,第一步是描述需求,第二步是根據需求建立系統的靜態模型圖,第三步是描述系統的行為。其中,第一步和第二步需要建立的模型為靜態模型,包括用例圖、類圖、包圖、對象圖、組合結構圖、組件圖和部署圖等;而第三步需要建立的模型為執行模型,包含狀態圖、活動圖、順序圖、通信圖、時序圖和交互概覽圖等圖形。
1.用例圖
用例圖(Use Case Diagram)顯示多個外部參與者以及他們與系統提供的用例之間的連接。用例是系統中的一個可以描述參與者與系統之間交互作用的功能單元。用例圖僅僅描述系統參與者從外部觀察到的系統功能,并不描述這些功能在系統內部的具體實現。如下圖中的用例圖,展示了一組用例、參與者及其之間的關系。

2.類圖
類圖(Class Diagram)以類為中心,圖中的其他元素或屬于某個類,或與類相關聯。在類圖中,類可以有多種方式相互連接:關聯、依賴、特殊化,這些連接稱為類之間的關系。所有的關系連同每個類內部結構都在類圖中顯示。

3.對象圖
對象圖(Object Diagram)是類圖的變體,使用與類圖相似的符號描述。不同之處在于,對象圖顯示的是類的多個對象實例,而非實際的類。可以說,對象圖是類圖的一個實例,用于顯示系統執行時的一個可能,即在某一時刻上系統顯現的樣子。
4.狀態圖
狀態圖(State Diagram)是對類描述的補充,用于顯示類的對象可能具備的所有狀態,以及引起狀態改變的事件。狀態之間的變化稱為轉移,狀態圖由對象的各個狀態和連接這些狀態的轉移組成。事件的發生會觸發狀態的轉移,導致對象從一種狀態轉化到另一種狀態。
實際建模時,并不需要為所有的類繪制狀態圖,僅對那些具有多個明確狀態并且這些狀態會影響和改變其行為的類才繪制狀態圖。

5.順序圖
順序圖(Sequence Diagram)顯示多個對象之間的動態協作,重點是顯示對象之間發送消息的時間順序。順序圖也顯示對象之間的交互,就是在系統執行時,某個指定時間點將發生的事情。順序圖的一個用途是用來表示用例中的行為順序,當執行一個用例行為時,順序圖中的每個消息對應了一個類操作或狀態機中引起轉移的觸發事件。

6.活動圖
活動圖(Activity Diagram)用于描述執行算法的工作流程中涉及的活動。動作狀態代表一個活動,即一個工作流步驟或一個操作的執行。活動圖由多個動作組成,當一個動作完成后,動作將會改變,轉移到一個新的動作。這樣,控制就在這些互相連接的動作之間流動。

7.通信圖
通信圖是順序圖之外另一個表示交互的方法。與順序圖一樣,通信圖也展示對象之間的交互關系。和順序圖描述隨著時間交互的各種消息不同,通信圖側重于描述哪些對象之間有消息傳遞,而不像順序圖那樣側重于在某種特定的情形下對象之間傳遞消息的時序性。也就是說,順序圖強調的是交互的時間順序,而通信圖強調的是交互的情況和參與交互的對象的整體組織。

通信圖作為表示對象間相關作用的圖形表示,也可以有層次結構。可以把多個對象作為一個抽象對象,通過分解,用下層通信圖表示出多個對象間的協作關系,這樣可緩解問題的復雜度。
8.組件圖
組件圖(Component Diagram)用代碼組件來顯示代碼物理結構,一般用于實際的編程中。組件可以是源代碼組件、二進制組件或可執行組件。組件中包含它所實現的一個或多個邏輯類的相關信息。組件圖中顯示組件之間的依賴關系,并可以很容易地分析出某個組件的變化將會對其他組件產生什么樣的影響。

9.部署圖
部署圖(Deployment Diagram)用于顯示系統的硬件和軟件物理結構,不僅可以顯示實際的計算機和節點,還可以顯示它們之間的連接和連接類型。

10.包圖
包圖用于展現模型要素的基本組織單元,以及這些組織單元之間的依賴關系。包圖是維護和控制系統總體結構的重要建模工具。對復雜系統進行建模時,經常需要處理大量的類、接口、組件、節點等元素,這時有必要對它們進行分組。把語義相近并傾向于同一變化的元素組織起來加入同一個包中,以便理解和處理整個模型。

11.組合結構圖
組合結構圖(Composite Structure Diagram)是UML 2.0中新增最有價值的新視圖,也稱為組成結構圖,主要用于描述內部結構、端口和協作等。
在組合結構圖中出現了“端口”和“協議”這兩個新的概念,其中“端口”是類的一種性質,用于確定該類與外部環境之間的一個交互點,也可以確定該類與其內部各組件之間的交互點;而“協議”則是基于UML中的“協作”概念衍生而成的,主要描述參與結合的多個元素(角色)的一種結構,以及各自完成特定的功能,并通過協作提供某些新功能。
12.時序圖
時序圖是順序圖的另一種表現形式。時序圖顯示系統內各對象處于某種特定狀態的時間,以及觸發這些狀態發生變化的消息。構造一個時序圖最好的方法是從順序圖中提取信息,然后按照時序圖的構成原則,相應添加時序圖的各構成部件。

13.交互概覽圖
交互概覽圖具有類似活動圖的外觀,因此也可以按活動圖的方式來理解。
交互概覽圖的外觀與活動圖類似,只是將活動圖中的動作元素改為交互概覽圖中的交互關系。如果概覽圖內的一個交互涉及時間,則使用時間圖;如果概覽圖中的另一個交互可能需要關注消息次序,則可以使用順序圖。交互概覽圖將系統內單獨的交互結合起來,并針對每個特定交互使用最合理的表示法,以顯示出它們如何協同工作,來實現系統的主要功能。
- Advanced Quantitative Finance with C++
- Objective-C Memory Management Essentials
- Boost C++ Application Development Cookbook(Second Edition)
- JavaScript 網頁編程從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- Interactive Applications Using Matplotlib
- RabbitMQ Cookbook
- Python機器學習算法: 原理、實現與案例
- Java網絡編程實戰
- Laravel Application Development Blueprints
- 深入解析Java編譯器:源碼剖析與實例詳解
- DevOps 精要:業務視角
- Socket.IO Cookbook
- Qt編程快速入門
- Building an E-Commerce Application with MEAN
- Oracle 11g寶典