- UML(United Modeling Language, 統(tǒng)?建模語(yǔ)?): 是?種基于?向?qū)ο蟮目梢暬UZ(yǔ)?.
-
UML中一共有10種圖
image.png
UML中的關(guān)系
- 關(guān)聯(lián)關(guān)系
- 依賴關(guān)系
- 泛化關(guān)系
- 實(shí)現(xiàn)關(guān)系
用例圖
(1)用例圖(use case Diagram):也稱為用戶模型抱慌,是從軟件需求到最終實(shí)現(xiàn)到第一步套么,它是從客戶到角度來(lái)描述系統(tǒng)功能啦膜。
(2)用例圖包含3個(gè)基本組件
- a 參與者(Actor)與系統(tǒng)打交道的人或其他系統(tǒng)即使用該系統(tǒng) 的人或事
物. 在 UML 中參與者用人形圖標(biāo)表示 - b (use case)代表系統(tǒng)的某項(xiàng)完整的功能. 在 UML 中使 用一個(gè)橢
圓來(lái)表示 - c 定義用例之間的關(guān)系 ------ 泛化關(guān)系, 擴(kuò)展關(guān)系, 包含關(guān)系
例圖
用例圖之前的關(guān)系
1 泛化關(guān)系:
表示同一業(yè)務(wù)目的(父用例)的不同技術(shù)實(shí)現(xiàn)(各個(gè)子用例). 在
UML 中, 用例泛化用一個(gè)三角箭頭從子用例指向父用例. 以下是某購(gòu)物網(wǎng)站為
用戶提供不同的支付方式
2 包含關(guān)系
的一部分. 在 UML 中包含關(guān)系用虛線箭頭加 “<<include>>”, 箭頭指向被包
含的用例
3 拓展關(guān)系
如果在完成某個(gè)功能的時(shí)候偶爾會(huì)執(zhí)?另外?個(gè)功能, 則?擴(kuò)展關(guān)系表?. 在 UML 中擴(kuò)展關(guān)系?虛線箭頭加 “<<extend>>”, 箭頭指向被擴(kuò)展的?例
類圖
類圖是面向?qū)ο笙到y(tǒng)建模中最常用的圖. 是定義其他圖的基礎(chǔ).
類圖主要是用來(lái)顯示系統(tǒng)中的類, 接口以及它們之間的關(guān)系.
類圖包含的主要元素有類, 接口和關(guān)系. 其中關(guān)系有泛化關(guān)系,關(guān)聯(lián)關(guān)系,
依賴關(guān)系和實(shí)現(xiàn)關(guān)系. 在類圖中也可以包含注釋和約束.
類的表示法
-
類是類圖的主要組件, 由 3 部分組成: 類名, 屬性和方法. 在 UML 中, 類
用矩形來(lái)表示, 頂端部分存放類的名稱, 中間部分存放類的屬性, 屬性的類型及
值, 底部部分存放類的方法, 方法的參數(shù)和返回
2.在 UML 中可以根據(jù)實(shí)際情況有選擇的隱藏屬性部分或方法部分或兩者
都隱藏
3.在 UML 中, 共有類型有 + 表示, 私有類型用 – 表示, 保護(hù)類型用 # 表示.
UML 的工具開(kāi)發(fā)商可以使用自己定義的符號(hào)表示不同的可見(jiàn)性
image.png
類之間的關(guān)系
- 泛化關(guān)系
- 在 UML 中, 泛化關(guān)系?來(lái)表?類與類, 接?與接?之間的繼承關(guān)系. 泛化關(guān)系有時(shí)也稱為”is a kind of”關(guān)系
-
在 UML 中泛化關(guān)系用一條實(shí)線空心箭頭有子類指向父類
image.png
-
實(shí)現(xiàn)關(guān)系
在 UML 中, 實(shí)現(xiàn)關(guān)系用來(lái)表示類與接口之間的實(shí)現(xiàn)關(guān)系.
在 UML 中實(shí)現(xiàn)關(guān)系用一條虛線空心箭頭由子類指向父類
image.png -
依賴關(guān)系
對(duì)于兩個(gè)相對(duì)獨(dú)立的系統(tǒng)众雷,當(dāng)一個(gè)系統(tǒng)負(fù)責(zé)構(gòu)造另一個(gè)系統(tǒng)的實(shí)例鸽斟,或
者依賴另一個(gè)系統(tǒng)的服務(wù)時(shí),這兩個(gè)系統(tǒng)之間體現(xiàn)為依賴關(guān)系. 例如生產(chǎn)零件
的機(jī)器和零件焚碌,機(jī)器負(fù)責(zé)構(gòu)造零件對(duì)象; 充電電池和充電器垃僚,充電電池通過(guò)充
電器來(lái)充電;自行車Bicycle和打氣筒Pump,自行車通過(guò)打氣筒來(lái)充氣
image.png -
關(guān)聯(lián)關(guān)系
對(duì)于兩個(gè)相對(duì)獨(dú)立的系統(tǒng)错妖,當(dāng)一個(gè)系統(tǒng)的實(shí)例與另一個(gè)系統(tǒng)的一些特定
實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí)绿鸣,這兩個(gè)系統(tǒng)之間為關(guān)聯(lián)關(guān)系。例如客戶和訂單暂氯,
每個(gè)訂單對(duì)應(yīng)特定的客戶潮模,每個(gè)客戶對(duì)應(yīng)一些特定的訂單;公司和員工痴施,每個(gè)
公司對(duì)應(yīng)一些特定的員工擎厢,每個(gè)員工對(duì)應(yīng)一特定的公司;自行車和主人辣吃,每輛
自行車屬于特定的主人动遭,每個(gè)主人有特定的自行車。而充電電池和充電器之間
就不存在固定的對(duì)應(yīng)關(guān)系神得,同樣自行車和打氣筒之間也不存在固定的對(duì)應(yīng)關(guān)系厘惦。
image.png
關(guān)聯(lián)關(guān)系的名稱
(關(guān)聯(lián)關(guān)系的名稱: 關(guān)聯(lián)關(guān)系可以有一個(gè)名稱, 用于描述該關(guān)系的性質(zhì). 此關(guān)聯(lián)名稱應(yīng)該是動(dòng)詞短語(yǔ), 因?yàn)樗砻髟磳?duì)象正在目標(biāo)對(duì)象上執(zhí)行動(dòng)作.)
關(guān)聯(lián)關(guān)系的角色
(當(dāng)一個(gè)類處于關(guān)聯(lián)的某一端時(shí), 該類就在這個(gè)關(guān)系中扮演一個(gè)特定的角色.
具體來(lái)說(shuō), 角色就是關(guān)聯(lián)關(guān)系中一個(gè)類對(duì)另一個(gè)類所表現(xiàn)的職責(zé). 角色名稱是名
詞或名稱短語(yǔ).)
關(guān)聯(lián)關(guān)系的多重性
關(guān)聯(lián)關(guān)系的多重性是指有多少對(duì)象可以參與該關(guān)聯(lián), 多重性可以?來(lái)表達(dá)?個(gè)取值范圍, 特定值, ?限定的范圍.
類之間的關(guān)系—關(guān)聯(lián)—聚合
- 聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是更強(qiáng)的關(guān)聯(lián)關(guān)系哩簿。
- 聚合是整體和部分之間的關(guān)系宵蕉,例如汽車由引擎、輪胎以及其它零件組成节榜。
-
聚合關(guān)系也是通過(guò)成員變量來(lái)實(shí)現(xiàn)的羡玛。但是,關(guān)聯(lián)關(guān)系所涉及的兩個(gè)類處在
同一個(gè)層次上宗苍,而聚合關(guān)系中稼稿,兩個(gè)類處于不同的層次上亿遂,一個(gè)代表整體,一
個(gè)代表部分渺杉。
image.png
類之間的關(guān)系—關(guān)聯(lián)—組合
- UML類圖關(guān)系中合成關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系挪钓。
-
代表整體的對(duì)象負(fù)責(zé)代表部分對(duì)象的生命周期是越。
image.png
對(duì)象圖
- 對(duì)象圖是類圖的一個(gè)實(shí)例, 用于顯示系統(tǒng)執(zhí)行時(shí)的一個(gè)可能的快照. 即
在某一個(gè)時(shí)間上系統(tǒng)可能出現(xiàn)的樣子. 對(duì)象圖用帶下劃線的對(duì)象名稱來(lái)表示對(duì)象. - 表現(xiàn)對(duì)象的特征
-
對(duì)象圖展現(xiàn)了多個(gè)對(duì)象的特征及對(duì)象之間的交互
image.png
時(shí)序圖
- 時(shí)序圖用于描述對(duì)象之間的傳遞消息的時(shí)間順序, 即用例中的行為順序.
- 當(dāng)執(zhí)行一個(gè)用例時(shí), 時(shí)序圖中的每條消息對(duì)應(yīng)了一個(gè)類操作或者引起轉(zhuǎn)換的
觸發(fā)事件. - 在 UML 中, 時(shí)序圖表示為一個(gè)二維的關(guān)系圖, 其中, 縱軸是時(shí)間軸, 時(shí)間延豎
線向下延伸. 橫軸代表在協(xié)作中各個(gè)獨(dú)立的對(duì)象. 當(dāng)對(duì)象存在時(shí), 生命線用一條
虛線表示, 消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象的生命線的箭頭表示. 箭頭
以時(shí)間的順序在圖中上下排列.
時(shí)序圖中的基本概念
- 對(duì)象:
時(shí)序圖中對(duì)象使用矩形表示, 并且對(duì)象名稱下有下劃線. 將對(duì)象置于
時(shí)序圖的頂部說(shuō)明在交互開(kāi)始時(shí)對(duì)象就已經(jīng)存在了. 如果對(duì)象的位置不在頂部,
表示對(duì)象是在交互的過(guò)程中被創(chuàng)建的. - 生命線:
生命線是一條垂直的虛線. 表示時(shí)序圖中的對(duì)象在一段生命周期
內(nèi)的存在. 每個(gè)對(duì)象底部中心的位置都帶有生命線. - 消息:
兩個(gè)對(duì)象之間的單路通信. 從發(fā)送方指向接收方. 在時(shí)序圖中很少使
用返回消息. - 激活:
時(shí)序圖可以描述對(duì)象的激活和鈍化. 激活表示該對(duì)象被占用已完成
某個(gè)任務(wù). 鈍化指對(duì)象處于空閑狀態(tài), 等待消息. 在 UML 中, 對(duì)象的激活時(shí)將對(duì)
象的生命線拓寬為矩形來(lái)表示的. 矩形稱為計(jì)劃條或控制期. 對(duì)象就是在激活條
的頂部被激活的. 對(duì)象在完成自己的工作后被鈍化. -
對(duì)象的創(chuàng)建和銷毀:
在時(shí)序圖中, 對(duì)象的默認(rèn)位置是在圖的頂部. 這說(shuō)明對(duì)
象在交互開(kāi)始之前就已經(jīng)存在了. 如果對(duì)象是在交互過(guò)程中創(chuàng)建的, 那么就應(yīng)該
將對(duì)象放到中間部分. 如果要撤銷一個(gè)對(duì)象, 在其生命線終止點(diǎn)處放置 “ X” 符號(hào).
image.png
活動(dòng)圖
在 UML 中, 活動(dòng)圖本質(zhì)上就是流程圖. 它用于描述系統(tǒng)的活動(dòng), 判定點(diǎn)和
分支等.
- 活動(dòng)圖中的基本概念
- 動(dòng)作狀態(tài):
原子的, 不可中斷的動(dòng)作, 并在此動(dòng)作完成之后向另一個(gè)動(dòng)作轉(zhuǎn)變. 在 UML 中動(dòng)作狀態(tài)用圓角矩形表示, 動(dòng)作狀態(tài)所表示的動(dòng)作寫在圓角矩形內(nèi)部 - 分支與合并:
分支在軟件系統(tǒng)中很常見(jiàn). 一般用于表示對(duì)象類所具有的條件行為. 用一個(gè)布爾型表達(dá)式的真假來(lái)判定動(dòng)作的流向. 條件行為用分支和合并表達(dá).在活動(dòng)圖中, 分支用空心小菱形表示. 分支包括一個(gè)入轉(zhuǎn)換和兩個(gè)帶條件的出轉(zhuǎn)換, 出轉(zhuǎn)換的條件應(yīng)該是互斥的, 須保證只有一條出轉(zhuǎn)換能夠被觸發(fā). 合并包含兩個(gè)帶條件的入轉(zhuǎn)換和一個(gè)出轉(zhuǎn)換. - 分叉與匯合:
分叉用來(lái)描述并發(fā)線程, 每個(gè)分叉可以有一個(gè)輸入轉(zhuǎn)換和兩個(gè)或多個(gè)輸出轉(zhuǎn)換. 每個(gè)轉(zhuǎn)換都可以是獨(dú)立的控制流. 匯合代表兩個(gè)或多個(gè)并發(fā)控制流同步發(fā)生, 當(dāng)所有的控制流都達(dá)到匯合點(diǎn)后, 控制才能繼續(xù)往下進(jìn)行. 每個(gè)匯合可以有兩個(gè)或多個(gè)輸入轉(zhuǎn)換和一個(gè)輸出轉(zhuǎn)換. 在 UML 中分叉和匯合用一條粗直線表示 -
泳道:
泳道將活動(dòng)圖中的活動(dòng)劃分為若干組, 并將每一組指定給負(fù)責(zé)這組
活動(dòng)的業(yè)務(wù)組織. 泳道區(qū)分負(fù)責(zé)活動(dòng)的對(duì)象, 明確地表示哪些活動(dòng)是由哪些對(duì)象
進(jìn)行的. 每個(gè)活動(dòng)指定明確地屬于一個(gè)泳道. 在活動(dòng)圖中, 泳道用垂直實(shí)線繪出,
垂直線分隔的區(qū)域即為泳道
image.png
狀態(tài)圖
- 狀態(tài):
用圓角矩形表示. 狀態(tài)名稱表示狀態(tài)的名字, 通常用字符串表示. 一
個(gè)狀態(tài)的名稱在狀態(tài)圖所在的上下文中應(yīng)該是唯一的. - 轉(zhuǎn)換:
用帶箭頭的直線表示. 一端連著源狀態(tài), 一端連著目標(biāo)狀態(tài). - 初始狀態(tài):
每個(gè)狀態(tài)圖都有一個(gè)初始狀態(tài). 此狀態(tài)代表狀態(tài)圖的起始位置. 初始狀態(tài)只能作為轉(zhuǎn)換的源, 不能作為轉(zhuǎn)換的目標(biāo), 并且在狀態(tài)圖中只能有一個(gè). 初始狀態(tài)用一個(gè)實(shí)心圓表示. - 終止?fàn)顟B(tài):
模型元素的最后狀態(tài), 是一個(gè)狀態(tài)圖的終止點(diǎn). 終止?fàn)顟B(tài)在一個(gè)狀態(tài)圖中可以有多個(gè).
協(xié)作圖
- 協(xié)作圖(也叫合作圖)是一種交互圖.
-
時(shí)序圖主要側(cè)重于對(duì)象間消息傳遞在時(shí)間上的先后關(guān)系, 而協(xié)作圖表達(dá)
對(duì)象間的交互過(guò)程及對(duì)象間的關(guān)聯(lián)關(guān)系。
image.png
包圖
-
包圖:
由包和包之間的關(guān)系組成. 包的圖標(biāo)就如同一個(gè)帶標(biāo)簽的文件夾.
包提供了一種用于組織各種元素的分組機(jī)制. 在 UML 中, 包用來(lái)對(duì)元素進(jìn)
行分組, 并為這些元素提供命名空間. 包所擁有的或者引用的所有元素稱為包
的內(nèi)容, 包沒(méi)有實(shí)例.
image.png
組件圖
組件圖用來(lái)建立系統(tǒng)中各組件之間的關(guān)系, 各組件通過(guò)功能組織在一起.
Javabean, ejb, jsp 都是組件碌上。在UML中倚评,組件使用在左側(cè)有兩個(gè)小矩形的大矩形來(lái)表示。 組件圖可以用來(lái)設(shè)計(jì)系統(tǒng)的整體構(gòu)架馏予。
部署圖簡(jiǎn)介
部署圖用來(lái)幫助開(kāi)發(fā)者了解軟件中的各個(gè)組件駐留在什么硬件位置, 以及
這些硬件之間的交互關(guān)系天梧。
節(jié)點(diǎn): 用來(lái)表示一種硬件, 可以是打印機(jī), 計(jì)算機(jī)等.節(jié)點(diǎn)的標(biāo)記符號(hào)是一
個(gè)三維框,在框的左上方包含了節(jié)點(diǎn)的名稱霞丧。
通信關(guān)聯(lián): 節(jié)點(diǎn)通過(guò)通信關(guān)聯(lián)建立彼此的關(guān)系呢岗,采用從節(jié)點(diǎn)到節(jié)點(diǎn)繪制實(shí)
線來(lái)表示關(guān)聯(lián)。
start UML下載鏈接