- Android開發三劍客:UML、模式與測試
- 王家林
- 8字
- 2019-01-04 01:52:45
第2章 UML與StarUML簡介
2.1 UML介紹
1.UML的定義
UML全稱為Unified Modeling Language,中文翻譯為“統一建模語言”,其主要內容是針對面向對象的分析和設計。UML是由OMG(Obeject Management Group)在1997年發表的圖標式軟件設計語言。
UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它融入了軟件工程領域的新思想、新方法和新技術。它的作用域不限于支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。UML適用于以面向對象技術來描述任何類型的系統,而且適用于系統開發的不同階段,從需求規格描述直至系統完成后的測試和維護。
UML具有以下重要的功能:可視化(Visualizing)功能、說明(Specifying)功能、建造和建立文檔(Documenting)的功能。
2.UML的組成
UML由圖和元模型組成,圖是語法,元模型是語義。UML主要包括三個基本構造塊:事物(Things)、關系(Relationships)和圖(Diagrams)。
1)事物
事物是實體抽象化的最終結果,是模型中的基本成員,UML中包含結構事物、行為事物、分組事物和注釋事物。
(1)結構事物(Structural Things)。
結構事物是模型中的靜態部分,用來呈現概念或實體的表現元素,是軟件建模中最常見的元素,共有以下7種:
● 類(Class):類是指具有相同屬性、方法、關系和語義的對象的集合。
● 接口(Interface):接口是指類或組件所提供的服務(操作),描述了類或組件對外可見的動作。
● 協作(Collaboration):協作描述合作完成某個特定任務的一組類及其關聯的集合,用于對使用情形的實現建模。
● 用例(Use Case):用例定義了執行者(在系統外部和系統交互的人)和被考慮的系統之間的交互來實現的一個業務目標。
● 活動類(Active Class):活動類的對象有一個或多個進程或線程。活動類和類很相像,只是它的對象所代表的元素的行為和其他的元素是同時存在的。
● 組件(Component):組件是物理的、可替換的部分,包含接口的集合,如COM+、Java BEANS等。
● 結點(Node):結點是系統在運行時存在的物理元素,代表一個可計算的資源,通常占用一些內存和具有處理能力。
(2)行為事物(Behavioral Things)。
行為事物指的是UML模型中的動態部分,代表語句里的“動詞”,表示模型里隨著時空不斷變化的部分,包含兩類:
● 交互(Ineraction):交互是由一組對象之間在特定上、下文中,為達到特定的目的而進行的一系列消息交換而組成的動作。
● 狀態機(State Machine):狀態機由一系列對象的狀態組成。
(3)分組事物(Grouping Things)。
可以把分組事物看成是一個“盒子”,模型可以在其中被分解。目前只有一種分組事物,即包(Package)。結構事物、動作事物甚至分組事物都有可能放在一個包中。包純粹是概念上的,只存在于開發階段,而組件在運行時存在。
(4)注釋事物(Annotational Things)。
注釋事物是UML模型的解釋部分。
2)關系
關系是將事物聯系在一起的方式,UML中定義了四種關系:
● 依賴(Dependencies):兩個事物之間的語義關系,其中一個事物發生變化會影響另一個事物的語義。
● 關聯(Association):一種描述一組對象之間連接的結構關系,如聚合關系(描述了整體和部分間的結構關系)。
● 泛化(Generalization):一種一般化—特殊化的關系。
● 實現(Realization):類之間的語義關系,其中的一個類指定了由另一個類保證執行的契約。
3)圖
圖(Diagram)是事物集合的分類,UML中包含多種圖:
● 類圖(Class Diagram):類圖描述系統所包含的類、類的內部結構及類之間的關系。
● 對象圖(Object Diagram):對象圖是類圖的一個具體實例。
● 組件圖(Compoment Diagram,也稱構件圖):組件圖描述代碼部件的物理結構以及各部件之間的依賴關系。
● 部署圖(Deployment Diagram):部署圖定義系統中軟/硬件的物理體系結構。
● 用例圖(Usecase Diagram):用例圖從用戶的角度出發描述系統的功能、需求,展示系統外部的各類角色與系統內部的各種用例之間的關系。
● 時序圖(Sequence Diagram):時序圖表示對象之間動態合作的關系。
● 協作圖(Collaboration Diagram):協作圖描述對象之間的協作關系。
● 狀態圖(Statechart Diagram):狀態圖描述一類對象的所有可能的狀態及事件發生時狀態的轉移條件。
● 活動圖(Activity Diagram):活動圖描述系統中各種活動的執行順序。
上述9種圖可歸納為五類,如下表所示。

2.2 安裝StarUML
StarUML是一款開源、免費的UML開發工具。
使用StarUML可以創建UML用例圖、類圖、時序圖、狀態圖、活動圖、通信圖、模塊圖、部署圖及復合結構圖等。
現在很多公司均使用輕量級的UML開發工具,StarUML受到越來越多人的青睞。同時,StarUML也是很多初學者學習統一建模語言的首選。
進入StarUML的官方網站(http://staruml.sourceforge.net/en/index.php),如下圖所示。

下面來說明整個安裝過程。
(1)可以到http://staruml.sourceforge.net/en/download.php下載安裝包。
(2)安裝。筆者把StarUML安裝在了D:\UMLSpace\StarUML\ProgramFiles目錄下。
(3)安裝后啟動StarUML,出現如下圖所示的界面。

單擊“OK”按鈕即可,此時StarUML已經成功啟動,下圖是StarUML啟動后的界面。

2.3 StarUML入門
下面讓我們一步一步地探索如何使用StartUML進行統一建模。事先說明:這里只是探索了如何使用StarUML進行統一建模,主要包括類圖、對象圖、類圖和對象圖的相互關系(這種關系主要是類、接口等的關系)。
啟動StarUML初始工作界面,如下圖所示。主要包括四個部分:左邊的工具欄、中間的工作區、右上邊的瀏覽區和右下邊的屬性區。圖中的“工具欄”、“工作區”、“瀏覽區”、“屬性區”是為了讀者更好地瀏覽而加上去的,不屬于StarUML本身。

1.UML類圖
UML類圖包括類名、屬性、方法三部分。
(1)選中工具欄中工具箱中的“Class”,在工作區中只需用鼠標輕輕一點就可以出現一個簡單類的初始模型,如下圖所示。

(2)將這個類做成真正想要的類。
首先是改變類名:雙擊上圖中的“Kim, Hyunsoo”,然后輸入想要的名字,在這里輸入“Person”。
其次是添加屬性:雙擊“Person”,此時在“Person”的右面出現一個框,點選右邊框中左側的“Add Attribute”即可添加一個屬性,此時把這個屬性重命名為“name”,然后再添加一個屬性“age”。接下來可以給屬性設定類型,選擇相應的屬性,會發現Type的類型很少,如下圖所示。

解決方案:使用快捷鍵Ctrl+F8或者單擊菜單欄的“Model”,在彈出的下拉列表框中單擊“Profiles”,彈出如下圖所示的對話框。

單擊“Java Profiles”,然后單擊中間的“Include”即可,此時在打開Type選擇框時就會有很多類型了,如下圖所示。

選擇相應的類型,這里設置name為String類型,age為Integer類型。
接下來是分別添加每個屬性的Getter和Setter,最終的類圖如下圖所示。

2.抽象類
這里以抽象的Animal為例進行說明,該抽象類有一個抽象方法:sleep。
和建立類圖類似,只是在類圖的屬性中要選擇“IsAbstact”屬性按鈕,如下圖所示。

方法變為抽象的方式:同樣是在方法的屬性上勾選“IsAbstract”,最終效果如下圖所示。

3.接口
接口的默認形狀是一個棒棒糖,接口中的所有方法都是公開抽象的。
注意在StarUML中接口在工具欄中要點選的是“Interface”,如下圖所示。

例如,有一個Car接口,該接口有一個run方法,結構圖如下圖所示。

4.對象圖
下面一起來看一下對象圖,面向對象編程思想中有一句很重要的話叫做“一切皆對象”。
做一個對象圖基本分以下幾步。
(1)建立一個Person類的實例,為了方便,這里的Person類是使用前面建立的Person類。
選中工具箱中的“Object”在工作區中單擊一下,如下圖所示。

把該對象命名為“zhangsan”,在屬性中選擇“Classfier”中“Design Model”下的“Person”即可確定其類型,如下圖所示。

(2)為zhangsan這個Person實例化對象添加屬性。
在對象上面單擊右鍵,依次選擇“Add”、“Attribute Link”添加相應的屬性,把屬性重命名為“name”, Attribute選擇為Person中的name,如下圖所示。

在屬性框中設置Value為“張三”,如下圖所示。

這樣一個name值就設定好了,設置好后的效果圖如下圖所示。

5.“一般化關系”,也就是面向對象中的“繼承”
類圖的建立和前面講到的沒什么兩樣,選擇Animal類,然后讓Dog和Cat都繼承這個類,選擇關系式要選擇工具箱中的“Generalization”,這些都很簡單,最終的效果如下圖所示。

想必到目前為止,讀者基本可以熟練地使用StarUML進行UML建模了,IT界有一個非常著名的原則叫“最小驚訝原則”,現在如日中天的Ruby把這一原則發揮得淋漓盡致。
6.Realization:實現接口
效果如下圖所示。

關聯關系:關聯關系在形式上表明一個類擁有對另外一個類的引用,關聯有單向關聯、雙向關聯和自關聯等。建立關系式使用的是工具箱中的“Association”。在關聯模型中可以給關聯關系起一個符合自解釋功能的名字。同時可以設定關聯基數,如一對一、多對一、一對多、多對多等。這里以Driver和Taxi為例來說明關聯關系,效果如下圖所示。

聚合關系:聚合關系是關聯關系的一種,但比關聯關系更強烈,它表明了一種整體和部分之間的關系,在StarUML中做聚合關系時使用的是工具箱中“Aggregation”,聚合關系的UML示例圖如下圖所示。

合成關系:合成關系也是關聯關系的一種,是一種比聚合關系更強的關聯關系。它要求作為整體的部分必須負責作為部分對象的生命周期。例如,說人具有一雙手,人負責人的手的生命周期,手離開了人是沒有意義的,離開人的手也就不再是手了。合成關系要使用工具箱中的“Composition”來構建。合成關系的UML示例圖如下圖所示。

依賴關系:依賴關系也是關聯關系的一種,它是指一個類依賴于另外一個類的存在而存在。例如,人是依賴于房子的存在而存在的。在StarUML中依賴關系的UML建模需要使用工具箱中的“Dependency”,示例圖如下圖所示。

- Learn to Create WordPress Themes by Building 5 Projects
- Visual FoxPro程序設計教程
- Implementing Cisco Networking Solutions
- Python時間序列預測
- Python Data Analysis Cookbook
- HTML5 APP開發從入門到精通(微課精編版)
- 從零開始學Android開發
- Learning Android Application Testing
- Android移動應用項目化教程
- INSTANT EaselJS Starter
- Python GUI設計tkinter菜鳥編程(增強版)
- Java Web程序開發參考手冊
- 微信小程序開發
- Xamarin Mobile Application Development for iOS
- Java應用架構設計:模塊化模式與OSGi