統一建模語言(Unified Modeling Language,UML)是用來設計軟件的可視化建模語言。它的特點是簡單、統一、圖形化、能表達軟件設計中的動態與靜態信息。
UML 從目標系統的不同角度出發,定義了用例圖、類圖、對象圖、狀態圖、活動圖、時序圖、協作圖、構件圖、部署圖等 9 種圖。
類圖概述
類圖(Class diagram)是顯示了模型的靜態結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關系等。類圖不顯示暫時性的信息。類圖是面向對象建模的主要組成部分。
2.2 類圖的作用
- 在軟件工程中,類圖是一種靜態的結構圖,描述了系統的類的集合,類的屬性和類之間的關系,可以簡化了人們對系統的理解;
- 類圖是系統分析和設計階段的重要產物,是系統編碼和測試的重要模型。
2.3 類圖表示法
2.3.1 類的表示方式
在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且帶有分割線的矩形來表示,比如下圖表示一個Employee類,它包含name,age和address這3個屬性,以及work()方法。
屬性/方法名稱前加的加號和減號表示了這個屬性/方法的可見性,UML類圖中表示可見性的符號有三種:
- +:表示public
- -:表示private
- #:表示protected
屬性的完整表示方式是: 可見性 名稱 :類型 [ = 缺省值]
方法的完整表示方式是: 可見性 名稱(參數列表) [ : 返回類型]
注意:
1,中括號中的內容表示是可選的
2,也有將類型放在變量名前面,返回值類型放在方法名前面
舉個栗子:
上圖Demo類定義了三個方法:
- method()方法:修飾符為public,沒有參數,沒有返回值。
- method1()方法:修飾符為private,沒有參數,返回值類型為String。
- method2()方法:修飾符為protected,接收兩個參數,第一個參數類型為int,第二個參數類型為String,返回值類型是int。
2.3.2 類與類之間關系的表示方式
2.3.2.1 關聯關系
關聯關系是對象之間的一種引用關系,用於表示一類對象與另一類對象之間的聯系,如老師和學生、師傅和徒弟、丈夫和妻子等。關聯關系是類與類之間最常用的一種關系,分為一般關聯關系、聚合關系和組合關系。我們先介紹一般關聯。
關聯又可以分為單向關聯,雙向關聯,自關聯。
1,單向關聯
在UML類圖中單向關聯用一個帶箭頭的實線表示。上圖表示每個顧客都有一個地址,這通過讓Customer類持有一個類型為Address的成員變量類實現。
2,雙向關聯
從上圖中我們很容易看出,所謂的雙向關聯就是雙方各自持有對方類型的成員變量。
在UML類圖中,雙向關聯用一個不帶箭頭的直線表示。上圖中在Customer類中維護一個List<Product>,表示一個顧客可以購買多個商品;在Product類中維護一個Customer類型的成員變量表示這個產品被哪個顧客所購買。
3,自關聯
自關聯在UML類圖中用一個帶有箭頭且指向自身的線表示。上圖的意思就是Node類包含類型為Node的成員變量,也就是“自己包含自己”。
聚合關系是關聯關系的一種,是強關聯關系,是整體和部分之間的關系。
聚合關系也是通過成員對象來實現的,其中成員對象是整體對象的一部分,但是成員對象可以脫離整體對象而獨立存在。例如,學校與老師的關系,學校包含老師,但如果學校停辦了,老師依然存在。
在 UML 類圖中,聚合關系可以用帶空心菱形的實線來表示,菱形指向整體。下圖所示是大學和教師的關系圖:
2.3.2.3 組合關系
組合表示類之間的整體與部分的關系,但它是一種更強烈的聚合關系。
在組合關系中,整體對象可以控制部分對象的生命周期,一旦整體對象不存在,部分對象也將不存在,部分對象不能脫離整體對象而存在。例如,頭和嘴的關系,沒有了頭,嘴也就不存在了。
在 UML 類圖中,組合關系用帶實心菱形的實線來表示,菱形指向整體。下圖所示是頭和嘴的關系圖:
2.3.2.4 依賴關系
依賴關系是一種使用關系,它是對象之間耦合度最弱的一種關聯方式,是臨時性的關聯。在代碼中,某個類的方法通過局部變量、方法的參數或者對靜態方法的調用來訪問另一個類(被依賴類)中的某些方法來完成一些職責。
在 UML 類圖中,依賴關系使用帶箭頭的虛線來表示,箭頭從使用類指向被依賴的類。下圖所示是司機和汽車的關系圖,司機駕駛汽車:
2.3.2.5 繼承關系
繼承關系是對象之間耦合度最大的一種關系,表示一般與特殊的關系,是父類與子類之間的關系,是一種繼承關系。
在 UML 類圖中,泛化關系用帶空心三角箭頭的實線來表示,箭頭從子類指向父類。在代碼實現時,使用面向對象的繼承機制來實現泛化關系。例如,Student 類和 Teacher 類都是 Person 類的子類,其類圖如下圖所示:
2.3.2.6 實現關系
實現關系是接口與實現類之間的關系。在這種關系中,類實現了接口,類中的操作實現了接口中所聲明的所有的抽象操作。
在 UML 類圖中,實現關系使用帶空心三角箭頭的虛線來表示,箭頭從實現類指向接口。例如,汽車和船實現了交通工具,其類圖如圖 9 所示。