1. 程式人生 > 實用技巧 >入門計算機的粗略學習-Day6

入門計算機的粗略學習-Day6

UML圖

概念介紹

UML圖是產品必修課之一,可以幫助程式設計師梳理業務模型和業務流程,幫助程式設計師快速理解業務關係。一般至少需要掌握一種結構型UML圖和一種行為型UML圖。
在軟體領域,影響力最強的建模工具當屬統一建模語言(UnifiedModeling Language,UML)了。1997年,物件管理組織(Object Management Group,OMG)釋出了UML。UML的目標之一是為開發團隊提供標準通用的設計語言來開 發和構建計算機應用。UML提出了一套IT專業人員期待多年的統一的標準建模符號。通過使用UML,使用者能夠閱讀和交流系統架構和設計 規劃,就像建築工人使用的建築設計圖一樣。

UML擁有一種定義良好的、富有表現力的表示法,這對軟體開發過程非常重要。標準的表示法讓分析師或開發者能夠描述一個場景、闡明一種架構,並準確地將這些資訊告訴別人。
總的來說,我們構建的UML模型將以一定的保真度和角度展現要 構建的真實系統。但是複雜軟體系統面臨的問題是多樣的,在不同的軟體研發階段,針對不同的使用目的,我們需要不同的模型圖,每一種模 型圖都提供了系統的某一種檢視。
UML分為結構型和行為型建模圖形,具體分類如圖所示。
在這裡插入圖片描述

關於UML的資料和書籍已有很多,推薦閱讀Grady Booch等人 的《面向物件分析與設計》和Larman的《UML和模式應用》這兩本書。
下面詳細介紹一下類圖,主要有兩個原因

(1)首先,在面向物件設計中,類圖佔有非常重要的地位。類圖 僅可以表示類之間的關係,其表示法還可以表達領域概念之間的關係,非常適合進行領域建模。
(2)其次,在面試和工作的過程中很多人並不熟悉UML類圖,要麼不會畫類圖,要麼用錯表示法。

類圖

類(Class)封裝了資料和行為,是面向物件的重要組成部分,是具有相同屬性、操作、關係的物件集合的總稱。在系統中,每個類都具有一定的職責,職責指的是類要完成什麼樣的功能,要承擔什麼樣的義務。
類圖用於描述類以及它們的相互關係。在分析時,我們利用類圖來說明實體共同的角色和責任,這些實體提供了系統的行為。在設計時,我們利用類圖來記錄類的結構,這些類構成了系統的架構。在類圖中,兩個基本元素是類,以及類之間的關係。

類的UML表示法
在UML中,類由包含類名、屬性和操作3部分組成,這3部分使用分隔線分隔的矩形表示。例如,定義一個Employee類,包含屬性 name、age和email,以及操作getName(),在UML類圖中,該類如圖所示。
在這裡插入圖片描述
在UML類圖中,類一般由以下3個部分組成:
(1) 類名(Name):每個類都必須有一個名字,類名是一個字串。
(2) 類的屬性(Attributes):屬性指類的性質,即類的成員變數。一個類可以有任意多個屬性,也可以沒有屬性。
(3) 類的操作(Operations):操作是類的任意一個例項物件都可以使用的行為,是類的成員方法。
類圖中屬性和操作的格式有規格說明。屬性規格說明格式是“可見 性 屬性名稱:型別”,比如“- name : String”。操作規格說明格式是“可見 性 操作名稱(引數名稱:型別):返回值型別”,比如“+ getName() : String”。
其中,可見性、名稱和型別的定義分別如下。
可見性:表示該屬性對於類外的元素而言是否可見,包括公有 (public)、私有(private)和受保護(protected),在類圖中分別 用符號+、-和#表示。 名稱:按照慣例,類的名稱以大寫字母開頭,單詞之間使用駝峰隔 開。屬性和操作的名稱以小寫字母開頭,後續單詞使用駝峰。 型別:表示屬性的資料型別,可以是基本資料型別,也可以是使用者 自定義型別。
類和類之間的關係主要有關聯關係、依賴關係、泛化關係。接下來,我們重點來看這些關係的UML表示法。

類的關聯關係
關聯(Association)關係是一種結構化關係,用於表示一類物件與 另一類物件之間有聯絡,如汽車和輪胎、師傅和徒弟、班級和學生等。 關聯關係是類與類之間常用的一種關係。在UML類圖中,用實線連線有關聯關係的物件所對應的類。在程式碼實現上,通常將一個類的物件作 為另一個類的成員變數。
在使用類圖表示關聯關係時,可以在關聯線上標註角色名,一般使 用一個表示兩者之間關係的動詞或者名詞來表示角色名(有時該名詞為 例項物件名),關係的兩端代表兩種不同的角色。因此,在一個關聯關 系中可以包含兩個角色名,角色名並不是必需的,可以根據需要增加, 其目的是使類之間的關係更加明確。
在UML中,關聯關係通常又包含以下6種 雙向關聯、限定關聯、單向關聯、自關聯、聚合關係、組合關係。
今天先將前三種關係:

1.雙向關聯
在預設情況下,關聯是雙向的。例如,一位教師(Teacher)可以 教授一或多門課程(Course),一門課程只能被一位教師教授,因此 Teacher類和Course類之間具有雙向關聯關係,如圖所示。
在這裡插入圖片描述
上圖三角形標註表示關聯關係的閱讀方向,是可選的。直線兩邊的數字代表關聯的重數性(Multiplicity),也是可選的,表示兩個關聯物件在數量上的對應關係。在UML中,物件之間的多重性可以直接在關聯直線上用一個數字或數字範圍表示。
物件之間可以存在多種多重性關聯的關係,常見的多重性表示方式 如下表所示。
在這裡插入圖片描述
2.限定關聯
限定關聯(Qualified association)具有限定符(Qualifier),限定符 的作用類似HashMap中的鍵(key),用於從一個集合中選擇一個或多個物件。例如,一個使用者(User)可以有多個角色(Role),但是在一個場景(Scenario)下,它只會是一種角色。
對於限定關聯,有一點需要注意,即多重性的變化。例如,比較圖a和圖b,限定減少了在關聯目標端的多重性,通常是由多變為一,因為限定關聯通常是從較大集合中選擇一個例項。
在這裡插入圖片描述
3.單向關聯
類的關聯關係也可以是單向的,單向關聯用帶箭頭的實線表示。例如,顧客(Customer)擁有地址(Address),則Customer類與Address 類具有單向關聯關係,如圖所示。