今天我們繼續來學習UML的相關知識。
在真正接觸UML核心之前,我們首先了解一下UML的一些通用知識。這如同在進入公園之前,先在公園周圍溜達溜達。
那么,我們今天在進入UML這個公園之前,要看看UML公園周圍的什么風景呢?下面這個圖給出這次帶領大家參觀的內容。
首先,我帶領大家參觀一下UML中的事物。
UML中的事物是UML中基本的面向對象的構造塊,也是UML中的重要詞匯,使用這些構造塊可以構造出良好模型。
在UML中定義了4種事物,如下圖所示:
首先,我們來詳細查看一下UML中的結構事物。
結 構 事 物
結構事物(structural thing)是UML模型中名詞,通常用于描述模型的概念元素或物理元素。結構事物主要包括:
(1)類(class)
類是對具有相同屬性和行為的對象的描述。在UML中,類的圖形如下圖所示:
即一個矩形框通常被水平分為三部分,從上到下依次是類的名稱、類的屬性和類的操作。
(2)接口(interface)
接口定義一組操作的規約,但并不對操作進行實現。每個操作描述了類可以提供的一種服務。
在UML中,接口可以使用兩種圖形來表示,一種使用圓圈來表示,這種情況往往與某個類連接在一起,以表示類可以對外提供的接口。一種是使用與類相似的圖標,加上構造型《interface》。這兩種情形如下圖所示:
接口表示法1
接口表示法2
(3)協作(collaboration)
協作定義一個交互過程。它是由一組共同工作以提供協作行為的角色和其他元素構成的一個整體。通常來說,這些協作行為大于所有元素的行為總和。
在圖形上,協作使用虛線橢圓來表示。
(4)用例(use case)
用例描述一組動作序列,系統執行這些動作后將對特定的參與者產生有價值且可觀察的結果。也可以簡單說用例是系統對外部參與者提供的一項服務或功能。在UML中,用例使用下面的圖形來表示:
(5)主動類(active class)
主動類對象本身至少擁有一個進程或線程,因此,主動類的對象可以自動地啟動控制活動,控制線程與其他元素并行執行。
主動類的表示方法與類相似,但其左右外框是雙線。
(6)構件(component)
構件是定義了良好接口的物理實現單元,是系統中物理的、可替代的部件。它提供一組接口的實現,每個構件體現了系統設計中某個特定的類。
(7)節點(Node)
節點是系統在運行時切實存在的物理對象,它表示一個計算資源,這些資源往往具有記憶能力和處理能力。一組構件可以駐留在一個節點內,也可以從一個節點遷移到另外一個節點。在圖形上,把節點畫成一個立方體或長方體。
以上是關于UML中結構事物的介紹,下面我們再看看UML中的行為事物。
行 為 事 物
行為事物(behavioral thing)是UML模型的動態部分,可以用于描述跨越時間和空間的行為。共有三種行為事物。
(1)交互(interaction)
交互是指在特定的語境(Context)中,一組對象為共同完成一定任務,為進行一系列消息交換而組成的動作以及消息交換的過程中形成的消息機制。交互的可視化主要通過消息來表示。消息由帶有名字或內容的有向箭頭來表示。
(2)狀態機(state machine)
狀態機是一個類的對象所有可能的生命歷程的模型,因此狀態機可用于描述一個對象或一個交互在其生命周期內響應時間所經歷的狀態序列。狀態機涉及到其它一些元素,如狀態、轉移、事件和活動等。在圖形上,把狀態畫成一個圓角矩形。
下圖是圖書的一個狀態。
(3)活動(activity)
活動描述了計算過程執行的步驟序列?;顒拥囊粋€步驟稱為一個動作,在圖形上使用下圖所示的圖形來表示。
下面來到UML中事物的第三站,讓我們再看看分組事物。
分 組 事 物
分組事物(grouping thing)是UML模型的組織部分。主要的分組事物是包(package)。包是用于對設計本身進行組織的通用機制。包內可以放入結構事物、行為事物或其它分組事物。包的圖形如下:
關于UML事物的最后一站是注釋事物。
注 釋 事 物
注釋事物(annotational thing)是UML模型的解釋部分。這些注釋事物可以用來描述、說明和標注模型中的任何元素。主要的注釋事物是注解(note)。注解是依附于一個模型元素或一組元素之上對其進行解釋或約束的符號。其圖形如下所示:
以上我們詳細參觀了UML中的事物,下面我們再轉戰UML中的關系。
在UML中定義了四種關系。
依 賴 關 系
依賴(dependency)是兩個模型元素間的語義關系,其中一個元素(獨立元素)發生變化會影響另一個元素(依賴元素)的語義。在圖形上,把依賴畫成一條可能有方向的虛線,也可能在其上還帶一定的標志。
下圖給出了兩個類之間的依賴關系。
關 聯 關 系
關聯(Association)是類之間的結構關系,用它來描述一組鏈,鏈是類對象之間的鏈接。
下圖給出了Department類和Teacher類之間的關聯關系。
這種關聯是一種單向關聯,它表征在Teacher類中要使用Department類的對象作為其成員。
關于關聯更多的內容將在類圖中作進一步的介紹。
泛 化 關 系
泛化(generalization)是一種特殊/一般關系。特殊元素(子元素)基于一般元素(父元素)而建立。用這種方法,子元素共享父元素的屬性和行為。
下圖給出了一般類(父類)Vehicle(車輛)和特殊類(子類)Truck(卡車)之間的泛化關系。
在Vechicle類中可以定義車輛共有的屬性和行為,而在Truck類中定義卡車特有的屬性和行為。
實 現 關 系
實現(realization)是類目之間的語義關系,其中一個類目規定了另外一個類目執行的規約。實現可以用于接口及實現其的類之間,也可以用于用例和實現其的協作之間。
在圖形上,實現關系使用帶有空心三角形的虛線來表示,下面是接口與實現其的類之間的實現關系表示方法。
以上參觀了解了UML中的關系,下面再參觀了解一下UML中的公共機制。
在UML中,有四種貫穿整個語言且通用一致的公共機制。
規 格 說 明
UML中的每個模型元素都可以添加規格說明(specification),以提供對構造塊的語法和語義的文字說明。
UML中的圖形化表示用來可視化建模,而UML的規格說明用來說明構造塊的細節。
修 飾
UML中的大多數元素都有唯一的圖形表示符號,以展示其最重要的方面。但對于一些其它細節可以表示為圖形或文字修飾,放到基本圖形中。如,抽象類的名稱使用斜體來表示,類屬性或方法的可見性可以在其前面使用+(公有)、-(私有)和#(保護的)來表示。
通 用 劃 分
在面向對象建模中,有2種通用劃分。
第一種是類和對象的劃分。類是一種抽象,對象是類的實例。在UML中,在對類和對象進行建模時,在圖形上可以區分開類及其對象。
在上面這個圖中,Person是一個類,而右面三個是它的對象,其中第一個顯式的指出Jack是類Person的一個對象;而第二個是Person的一個匿名對象;第三個未給出其所屬的對象,但可以在其規格說明中指出其所屬的類。
第二種是接口和實現的分離。接口聲明了一個規約,而實現則表示了對該接口中規約的具體實施。在UML中,可以對接口建模,也可以對實現進行建模。
上圖中,IUser是一個接口,VipUser是實現該接口的一個類。
擴展機制
UML再豐富也無法把實際細節完全表達出來,因此,UML中提供了擴展機制使人們能夠對UML按照某種方式來擴展其功能。UML主要提供了三種擴展機制:構造型、標記值和約束。
(1)構造型
構造型擴展機制的目的就是基于一個已存在的模型元素再重新定義一個新的模型元素,以擴展UML的詞匯。
如上圖中,在類的基礎上添加構造型《Exception》以指示其是一個異常類。
(2)標記值
標記值擴展了UML構造型的特性,可以用來創建構造型的說明信息。
上圖中使用注解的方式對InValidValue類進行版本和作者的說明。
(3)約束
約束用來對構造塊添加新規則或修改現有規則。約束一般放在一對花括號內。
上圖中在類關系時給Person添加的約束。
以上詳細介紹了UML中的事物、關系和公共機制。關于UML中的視圖和圖將在下一篇文章中進行介紹。
新聞熱點
疑難解答