Unified Modeling Language (UML)又稱統一建模語言或標準建模語言,,它是一個支持模型化和軟件系統開發的圖形化語言,爲軟件開發的所有階段提供模型化和可視化支持,包括由需求分析到規格,構造和配置等。是捕獲商業流程、促進溝通、管理複雜性、定義軟件架構,促進軟件複用的重要途徑!
目錄
UML簡介
UML是圖示化、說明、構造一個軟件系統並生成其文檔的標準語言。
UML獨立於開發過程,可與大多數面向對象開發過程配合使用。
UML獨立於程序設計語言,可用C++、Java等任何一種面向對象程序設計語言實現。
.
其中UML建模中最常用的三種圖是:用例圖、類圖、狀態轉換圖。
那麼接下來大灰狼就來和大家分別聊一聊這三種圖的基本建模方法
.
一、UML靜態建模—用例圖
用例圖描述外部執行者(actor)與系統的交互,表達系統的功能,也可以說是系統提供的服務。
它的主要元素是:“用例”和“執行者”
用例:執行者與計算機的一次典型交互,代表系統某一完整的功能。
用橢圓表示:
執行者:描述與系統交互的人或物,代表外部實體(如用戶、硬件設備或其他軟件系統)。
用UML中的小人表示:
建立用例模型
建立用例模型一般需要分爲4步:
(1)發現用例者
在這裏有幾個發現用例者的技巧可以參考:
①誰使用該系統
②誰改變系統的數據
③誰從系統獲取信息
④誰需要系統的支持以完成日常工作任務
⑤誰負責維護、管理並保持系統正常運行
⑥系統需要應付哪些硬件設備
⑦系統需要和哪些外部系統交互
⑧誰對系統運行產生的結果感興趣
(2)獲取用例
向執行者提出問題獲取用例以下幾個方法,同樣獲取用例需要知道:
①執行者需要獲取何種功能,需要作什麼?
②執行者需要讀取、產生、刪除、修改或存儲系統中的某種信息
③系統發生事件和執行者間‘是否需要通信’
(3)執行者間關聯
執行者之間存在泛化關係
如下面企業團體、客戶、與個人之間的關係
(
(4)用例間關聯
用例之間存在泛化關係、擴展關係和包含關係,這三個關係中的每一個用例之間都存在相應的聯繫。
1、泛化關係
即一般和特殊的關係
如:
有父用例的行爲,可出現在父用例出現的任何地方添加自己的行爲。
2、擴展關係
允許一個用例擴展另一用例的功能,與泛化關聯類似,有更多的規則限制。
基本UseCase必須聲明若干“擴展點”,擴展UseCase只能在擴展點上增加新行爲。
如下:
.
3、包含關係
一個基本UseCase行爲包含另一個UseCase行爲。
.
二、對象模型中的類圖
類圖的定義
描述類的信息及類與類之間的關係
如下面這個圖就是一個類圖:
類的圖形符號
在UML中,類的圖形符號爲長方形
如圖所示:
從上到下每一個長方形依次表示:
- 上:類的名字
- 中:類中的屬性
- 下:類中的服務(方法)
下面這就是一個完整的User類:
熟悉了類的基本構造,接下來就是類中的屬性和方法語法了。
.
屬性的語法
【可見性】屬性名【:l類型】【= 初值】
屬性的可見性同樣是有三種:
- 公有(+)public
- 私有(-)private
- 保護(#)protect
方法的語法
【可見性】方法名【(參數列表)】【:返回類型】
與屬性的可見性一樣,方法也是有公有、私有、保護三種可見性。
我們在作程序開發的時候,不可能只有一個類,而是很多個類相互關聯的結果。
那麼接下來大灰狼和大家聊一聊類與類之間的關係。
類與類之間的關係
類與類之間的關係有以下五種:
- 關聯
- 聚集
- 泛化
- 細化
- 依賴
每一種關係也都有它特定的表示和含義:
1、關聯關係
表示兩個類之間存在某種語義上的聯繫。
符號:箭頭
如下面“程序員類”和“計算機類”,程序員使用計算機,則他們之間存在一定的關
聯,
表示如下:
重數
同時在關聯關係中還存在一個名稱叫做“重數”
關於重數的定義是:
表示該類有多少個對象與對方的對象連接
書寫位置:寫在表示關聯的實線箭頭兩端
注意:如果不寫的話默認重數爲1
如程序員和計算機這兩個類
一名程序員可以使用多臺計算機,一臺計算機可以由多名程序員使用,所以這兩個類之間就是一對多的關係。表示如下:
角色
還有一個名詞叫“角色”
顯式的標明角色名有助於被人理解類圖
如程序員對計算機是使用的關係,所以在計算機類處就應該有所標明。
如下:
單向關聯和雙向關聯
同時,還分爲單向關聯和雙向關聯
如程序員使用計算機就是一個單向關聯,因爲計算機不會使用程序員
對於雙向關聯由叫自關聯
如丈夫和妻子
2、聚集關係
聚集關係是一種特殊的關聯關係,描述的類與類之間的關係是整體與部分的關係。
如陳述需求中使用的“包含”、“組成”、“分爲…部分”等字句,意味着存在聚集關係。
例如:一個教室當中有多個學生,教室與學生之間就屬於聚集關係。
同樣,聚集關係也可以分爲共享聚集和組合聚集
共享聚集
如果在聚集關係中處於部分方的對象可參與多個處於整體方對象的構成,則該聚集成爲共享聚集。
共享聚集的特點是:部分方對象不隨整體方對象的消亡而消亡。
共享聚集符號:空心菱形
例如上面說的教室和學生類,
組合聚集
如果部分類完全隸屬於整體類,部分與整體共存,則該聚集稱爲組合聚集
組合聚集的特點是:整體不存在了部分也會隨之消失(或失去價值了)
組合聚集符號:實心菱形
例如:一個窗口類由多個文本框類組成,窗口類和文本框類就屬於組合聚集
3、泛化(繼承)
類與類之間存在“一般—特殊”關係
符號:空心三角形
例:寵物類與狗類、狗類與鬥牛犬類就屬於泛化關係
4、細化(實現)
當對同一個事物在不同抽象層次上描述時,這些描述間具有細化關係
符號:虛線空心三角形
5、依賴
A類使用到了B類,B類本身是一個獨立的類,而這種使用關係是具有偶然性的、臨時性的、非常弱的,B類的變化也會影響到A類,這樣就說A類依賴B類,A、B兩個類是依賴關係。
值得注意的是,依賴和關聯具有如下的區別:
通常情況下,A類使用B類的對象作爲它的成員變量或操作函數。
在關聯關係中,A類使用B類的對象作爲它的全局變量。
依賴的符號表示:使用帶箭頭的虛線連接有依賴關係的兩個類,箭頭指向獨立的類。
例:有個動物類,動物要呼吸,需要氧氣類,動物類和氧氣類就屬於依賴關係。
.
三、動態建模機制—狀態轉換圖
表示一個對象(或模型元素)的生存史,顯示觸發狀態轉移的事件和因狀態改變導致的動作。
1、狀態
活動:活動名/動作表達式
Entry入口活動、exit出口活動、do內部執行活動
組合狀態:包含嵌套的子狀態
2、狀態轉換
事件說明(守衛條件)/動作表達式~發送子句
事件說明: 事件名(參數表)
守衛條件: 事件發生且守衛條件爲真狀態轉換
動作表達式:狀態轉換開始、執行的表達式
發送子句: 動作特例,在狀態轉換期間發送消
3、判定
工作流按保安條件取值發生分支
4、歷史狀態
轉移到組合狀態的歷史狀態,對象恢復上次離開組合狀態的最後一個子狀態
以上就是UML三種基本圖形的繪製方法,掌握UML圖形的繪製,是進行軟件開發設計的首要條件,之後大灰狼還會繼續更新軟件開發設計中動態模型的繪製要領。
覺得不錯記得 “點贊關注” 喲!
同時你也可以關注我的微信公衆號 “灰狼洞主” 獲取更多軟件開發設計的技術分享。公衆號回覆 “python筆記” 即可獲取Python入門到精通全套電子書籍和常用函數速查手冊!
大灰狼期待與你一同進步!