UML筆記—九種圖(一)

1.面向過程和麪向對象

面向過程

面向過程方法認爲我們的世界是一個一個相互關聯的小系統組成的,
然而如果系統比較簡單,需求複雜度較低的情況下還是非常管用的,
但是在系統需求複雜度高的情況下就會很難把這個過程模擬出來。
這也是面向過程的困難所在。

面向對象

面向對象(Object Oriented,OO)方法將世界看做一個一個
相互獨立的對象,相互之間並無因果關係。面向對象的精髓在
於抽象,同時也是困難所在,面向對象的成功在於成功的抽象,
而面向對象失敗在於失敗的抽象。

實現抽象過程我們需要以下幾點:

  • 一種把現實世界映射到對象世界的方法
  • 一種從對象世界描述現實世界的方法
  • 一種驗證對象世界行爲是否正確反映了現實世界的方法

2.UML

UML採用了“可視化”的圖形方式來定義語言。
UML(United Modeling Language),統一建模語言,是一種基於面向對象的可視化建模語言.
UML 採用了一組形象化的圖形(如類圖)符號作爲建模語言, 使用這些符號可以形象地描述系統的各個方面
UML 通過建立圖形之間的各種關係(如類與類之間的關係)來描述模型.

爲什麼UML很重要?

爲了回答這個問題,我們看看建築行業。設計師設計出房子。施工人員使用這個設計來建造房子。建築越複雜,設計師和施工人員之間的交流就越重要。藍圖就成爲了這個行業中的設計師和施工人員的必修課。

寫軟件就好像建造建築物一樣。系統越複雜,參與編寫與配置軟件的人員之間的交流也就越重要。在過去十年裏UML就成爲分析師,設計師和程序員之間的“建築藍圖”。現在它已經成爲了軟件行業的一部分了。UML提供了分析師,設計師和程序員之間在軟件設計時的通用語言。

UML被應用到面向對象的問題的解決上。想要學習UML必須熟悉面向對象解決問題的根本原則――都是從模型的建造開始的。一個模型model就是根本問題的抽象。域domain就是問題所處的真實世界。

模型是由對象objects組成的,它們之間通過相互發送消息messages來相互作用的。記住把一個對象想象成“活着的”。對象有他們知道的事(屬性attributes)和他們可以做的事(行爲或操作behaviors or operations)。對象的屬性的值決定了它的狀態state。

類Classes是對象的“藍圖”。一個類在一個單獨的實體中封裝了屬性(數據)和行爲(方法或函數)。對象是類的實例instances。

UML核心元素:

  • 版型
  • 參與者(actor):系統之外與系統交互的某人或某事物
  • 用例:定義一組用例實例,每一個實例都是系統所執行的一系列操作。
  • 邊界:邊界決定視界;決定抽象層次;
  • 業務實體:代表業務角色執行業務用例時所處理或使用的事物。
  • 包:包是容器,如同文件夾一樣。
  • 分析類:用於獲取系統主要的職責簇。
  • 設計類:系統實施中一個或多個對象的抽象。
  • 關係:抽象出對象之間聯繫。
  • 組件:系統中實際存在的可以更換部分,實現特定功能。
  • 節點:帶有至少一個處理器,內存以及可能還帶有其他設備的處理元素
面向對象的問題的處理的關鍵是建模問題。建模可以
把在複雜世界的許多重要的細節給抽象出來。許多建
模工具封裝了UML(也就是Unified Modeling Language™)

2 questions??

一、什麼是模型?模型是對現實世界的形狀或狀態的抽象模擬和簡化。
二、爲什麼要建模?最簡單的理由:爲了能夠更好地理解正在開發的系統。通過建模,可以達到四個目的:

  • 1、有助於按照需求對系統進行可視化的分析
  • 2、能夠系統的結構或行爲
  • 3、給出了知道構造系統的模板
  • 4、對做出的決策進行文檔化

3.UML核心視圖

3.1.UML中的視圖大體可以分爲兩大類:

  • 靜態模型圖:描述系統的靜態結構。 包括:用例圖,類圖, 包圖
  • 動態模型圖:描述系統行爲的各個方面。 包括:時序圖,協作圖,狀態圖,活動圖。

3.2.UML中的關係

UML 中的關係主要包括 9 種:

  • 關聯關係(association):用一條直線表示;
  • 依賴關係(dependency):用帶箭頭的虛線表示;
  • 擴展關係(extends):用帶箭頭的虛線加版型extends表示;
  • 包含關係(include):用帶箭頭的虛線加版型include表示;
  • 泛化關係(generalization):用帶空心箭頭的直線表示;
  • 實現關係(realization):用帶空心箭頭的虛線表示;
  • 精化關係(refine): 用帶箭頭的虛線加版型refine表示;
  • 聚合關係(aggregation):用帶空心菱形箭頭的直線表示;
  • 組合關係(composition):用帶實心菱形箭頭的直線表示;

UML九種圖:參考這篇文章

1、用例圖(use case diagrams)

【概念】描述用戶需求,從用戶的角度描述系統的功能
【描述方式】橢圓表示某個用例;人形符號表示角色
【目的】幫組開發團隊以一種可視化的方式理解系統的功能需求
【用例圖】

這裏寫圖片描述

用例Use case是爲了完成一個工作或者達到一個目的的一系列情節的總和。角色actor是發動與這個工作有關的事件的人或者事情。角色簡單的扮演着人或者對象的作用。下面的圖是一個門診部Make Appointment用例。角色是病人。角色與用例的聯繫是通訊聯繫communication association(或簡稱通訊communication)
這裏寫圖片描述

角色是人狀的圖標,用例是一個橢圓,通訊是連接角色和用例的線。
用例圖在三個領域很有作用。

  • 決定特徵(需求)。當系統已經分析好並且設計成型時,新的用例產生新的需求
  • 客戶通訊。使用用例圖很容易表示開發者與客戶之間的聯繫。
  • 產生測試用例。一個用例的情節可能產生這些情節的一批測試用例。

一般有以下用例視圖:

1.1.業務用例視圖

  • 1.1.1.業務主角視圖
    【概念】:從業務主角視圖來展示業務主角在業務中使用哪些業務用例來達成業務目標。
    【作用】:有利於向業務主角確認其業務目標是否齊全,來檢測是否有遺漏的業務用例。

這裏寫圖片描述

  • 1.1.2.業務模塊視圖:從業務模塊視角來展示業務領域的業務目標。
  • 1.1.3.其他視圖

1.2 業務用例實現視圖

這裏寫圖片描述

1.3 概念用例視圖

這裏寫圖片描述

2.類圖

【概念】顯示系統的靜態結構,表示不同的實體是如何相關聯的
【描述方式】三個矩形
【目的】表示一個邏輯類或實現類,邏輯類通常是用戶的業務所涉及的事物;實現類是程序員處理的實體

這裏寫圖片描述

【類圖】:
這裏寫圖片描述

UML類的符號是一個被劃分成三塊的方框:類名,屬性,和操作。類之間的關係是連接線。

類圖有三種關係。

  • 關聯association-表示兩種類的實例間的關係。如果一個類的實例必須要用另一個類的實例才能完成工作時就要用關聯。在圖中,關聯用兩個類之間的連線表示。
  • 聚合aggregation-當一個類屬於一個容器是一種特殊關係。聚合用一個帶菱形的連線,菱形指向具有整體性質的類。在我們的圖裏,Order是OrderDetails的容器。
  • 泛化generalization-一個指向以其他類作爲超類的繼承連線。泛化關係用一個三角形指向超類。Payment是Cash,Check和Credit的超類。

3.包和對象圖

【概念】類圖的一個實例,描述系統在具體時間點上所包含的對象以及各個對象的關係
【對象圖】

這裏寫圖片描述

爲了簡單地表示出複雜的類圖,可以把類組合成包packages。一個包是UML上有邏輯關係的元件的集合。下面這個圖是是一個把類組合成包的一個商業模型。

dependencies關係。如果另一個的包B改變可能會導致一個包A改變,則包A依賴包B。

包是用一個在上方帶有小標籤的矩形表示的。包名寫在標籤上或者在矩形裏面。點化線箭頭表示依賴
這裏寫圖片描述

4.序列圖(順序圖/時序圖)

【概念】描述對象之間的交互順序,着重體現對象間消息傳遞的時間順序
【描述方式】橫跨圖的頂部,每個框表示每個類的實例或對象;類實例名稱和類名稱使用冒號分開
【目的】顯示流程中不同對象之間的調用關係,還可以顯示不同對象的不同調用。
【序列圖】
這裏寫圖片描述

5.協作圖(Collaboration diagrams)

【概念】描述對象之間的合作關係,側重對象之間的消息傳遞
協作圖也是互動的圖表。他們像序列圖一樣也傳遞相同的信息,但他們不關心什麼時候消息被傳遞,只關心對象的角色。在序列圖中,對象的角色放在上面而消息則是連接線。

這裏寫圖片描述

對象角色矩形上標有類或對象名(或者都有)。類名前面有個冒號(:)。

協作圖的每個消息都有一個序列號。頂層消息的數字是1。同一個等級的消息(也就是同一個調用中的消息)有同樣的數字前綴,再根據他們出現的順序增加一個後綴1,2等等。

6.狀態圖(Statechart diagrams)

【概念】描述對象的所有狀態以及事件發生而引起的狀態之間的轉移
【描述方式】

  • 1.起始點:實心圓
  • 2.狀態之間的轉換:使用開箭頭的線段
  • 3.狀態:圓角矩形
  • 4.判斷點:空心圓
  • 5.一個或多個終止點:內部包含實心圓的圓

【目的】表示某個類所處的不同狀態以及該類在這些狀態中的轉換過程

對象擁有行爲和狀態。對象的狀態是由對象當前的行動和條件決定的。狀態圖statechart diagram顯示出了對象可能的狀態以及由狀態改變而導致的轉移。
我們的模型例圖建立了一個銀行的在線登錄系統。登錄過程包括輸入合法的密碼和個人賬號,再提交給系統驗證信息。

登錄系統可以被劃分爲四種不重疊的狀態:Getting SSN, Getting PIN, Validating, 以及 Rejecting。每個狀態都有一套完整的轉移transitions來決定狀態的順序。
這裏寫圖片描述

狀態是用圓角矩形來表示的。轉移則是使用帶箭頭的連線表示。觸發轉移的事件或者條件寫在箭頭的旁邊。我們的圖上有兩個自轉移。一個是在Getting SSN,另一個則在上Getting PIN。

初始狀態(黑色圓圈)是開始動作的虛擬開始。結束狀態也是動作的虛擬結束。

事件或條件觸發動作時用(/動作)表示。當進入Validating狀態時,對象並不等外部事件觸發轉移。取而代之,它產生一個動作。動作的結果決定了下一步的狀態。

7.活動圖(Activity diagrams)

活動圖activity diagram是一個很特別的流程圖。活動圖和狀態圖之間是有關係的。狀態圖把焦點集中在過程中的對象身上,而活動圖則集中在一個單獨過程動作流程。活動圖告訴了我們活動之間的依賴關係。

【概念】描述滿足用例要求所要進行的活動以及活動時間的約束關係
【描述方式】

  • 1.起始點:實心圓
  • 2.活動:圓角矩形
  • 3.終止點:內部包含實心圓的圓
  • 4.泳道:實際執行活動的對象

【目的】表示兩個或多個對象之間在處理某個活動時的過程控制流程
【活動圖】

“通過ATM來取錢。”

這個活動有三個類Customer, ATM和 Bank。整個過程從黑色圓圈開始到黑白的同心圓結束。活動用圓角矩形表示

這裏寫圖片描述

活動圖可以被分解成許多對象泳道swimlanes ,可以決定哪些對象負責那些活動。每個活動都有一個單獨的轉移transition連接這其他的活動。

轉移可能分支branch成兩個以上的互斥的轉移。保護表達式(在[]中)表示轉移是從一個分支中引出的。分支以及分支結束時的合併merge在圖中用菱形表示。

轉移也可以分解fork成兩個以上的並行活動。分解以及分解結束時的線程結合join在圖中用粗黑線表示

8.構件圖/組件圖(Component diagrams)

【概念】描述代碼構件的物理結構以及各構件之間的依賴關係
【描述方式】構件
【目的】提供系統的物理視圖,根據系統的代碼構件顯示系統代碼的整個物理結構
【構件圖】
這裏寫圖片描述

9.部署圖(Deployment diagrams)

【概念】系統中硬件的物理體系結構
【描述方式】

  • 1.三維立方體表示部件
  • 2.節點名稱位於立方體上部

【目的】顯示系統的硬件和軟件的物理結構
【部署圖】

這裏寫圖片描述

鏈接參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章