概念介紹
uml圖是產品必修課之一,可以幫助程式設計師梳理業務模型和業務流程,幫助程式設計師快速理解業務關係。一般至少需要掌握一種結構型uml圖和一種行為型uml圖。
在軟體領域,影響力最強的建模工具當屬統一建模語言(unifiedmodeling language,uml)了。2023年,物件管理組織(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 類具有單向關聯關係,如圖所示。
入門計算機的粗略學習 Day16
我們已經講過了棧和佇列,兩種資料結構。在程式語言中,還有幾種更常用的資料結構。線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標 pointer 或者引用。由於不必須按順序儲存,鍊錶的插入和刪除操作可以達到o 1 的複雜度。本文將講解單向鍊錶和雙向鍊錶,其中雙向鍊錶會給出部分關鍵 實現。cl...
Day 6 學習筆記 可信計算 6
乙個不小心就幾天沒有學習,我覺得可能是因為幾天前交了週報的原因,我一下子就放鬆了起來,打了幾天的懷舊遊戲。今天閱讀的主要內容來自一本書,a practical guide to tpm2.0 這本書來自於師兄推薦,作者是tpm2.0的專案負責人。很值得一讀。目前我只閱讀了書的前兩章,但是第二章只看了...
Day02 計算機入門
複製 cltr c 貼上 cltr v 剪下 cltr x 撤銷 cltr z 全選 cltr a 儲存 cltr s 關閉當前視窗 alt f4 永久刪除檔案 shift delete 開啟命令視窗 win r 開啟我的電腦 win e 開啟任務管理器 ctrl shift esc 任務視角 wi...