類於類圖標準總結1(UML類圖到底怎麼畫?)
什麼是UML?
UML,即統一建模語言(Unified Modeling Language),是描述軟體設計藍圖的語言,UML的作用是體現面向物件分析和設計(OOA/D)。首先它是”視覺化語言“就是說它把設計轉化成大家都能看懂的東西,建模即建立模型,模型指軟體的模型,這裡需要注意UML並不是OOA/D,通過OOA/D我們講將需求轉化為軟體模型,我們只是利用UML來將OOA/D表示出來,轉化成我們能看懂的東西,本篇文章也僅針對小白簡單介紹UML類圖到底怎麼畫?
UML類圖要畫些什麼?
UML類圖把面向物件軟體設計視覺化,就是把物件畫出來,然後把物件之間的關係畫出來,由此自然就“描述了軟體系統的結構”畫物件時要反映類的結構,就是要將物件的屬性、操作畫出來。
接下來我們來看看類圖中都有些什麼,
- 從上到下分為三部分,分別是類名、屬性和操作。類名是必須有的。
- 類如果有屬性,則每一個屬性都必須有一個名字,另外還可以有其它的描述資訊,如可見性、資料型別、預設值等
- 類如果有操作,則每一個操作也都有一個名字,其它可選的資訊包括可見性、引數的名字、引數型別、引數預設值和操作的返回值的型別等
類名很簡單,就是類的名字,只是注意斜體表示這個類為抽象類。往下屬性、操作和職責各佔一欄,每個屬性佔一行,先寫這個屬性是公開的(public(+))、私密的(private(-))、受到保護的(protected(#))還是包(package(~)),屬性後面加上名字,在後面如果有預設值(預設值就是有一些引數的值在每次呼叫函式時都相同,就定義時定下這個值,可以使書寫變得簡單(在編譯時,預設值有編譯器自動插入))就加上。每個操作也佔一行開頭和屬性一樣(+-#~)和名字(斜體表示這個操作為抽象操作),然後是在括號中的引數列表,再後” :“後加返回值型別。最後一欄寫職責,職責指類承擔的責任和義務。在矩形框中最後一欄中寫明類的職責。
例:
類圖中的事物及解釋
- 介面:一組操作的集合,只有操作的宣告而沒有實現
- 抽象類:不能被例項化的類,一般至少包含一個抽象操作
- 模版類:一種引數化的類,在編譯時把模版引數繫結到不同的資料型別,從而產生不同的類
類圖中的關係
把物件畫出來之後,就要把物件之間的關係畫出來
關聯(Association):
是一種擁有的關係, 它使一個類知道另一個類的屬性和方法;是雙向的,雙向的關聯可以有兩個箭頭或者沒有箭頭,描述了類的結構之間的關係。具有方向、名字、角色和多重性等資訊。一般的關 聯關係語義較弱。也有兩種語義較強,分別是聚合與組合
箭頭及指向:帶普通箭頭的實心線(也可以沒有線),指向雙方
直接關聯(Directed Association):
是一種擁有的關係, 它使一個類知道另一個類的屬性和方法;是單向的。單向的關聯有一個箭頭。
箭頭及指向:單向的關聯有一個箭頭。
聚合(Aggregation):
特殊關聯關係,指明一個聚集(整體)和組成部分之間的關係,類圖包含有事物和關係,類圖不存在了,事物和關係還可用於其它的類圖
箭頭及指向:帶空心菱形的實心線,菱形指向整體
組合關係(合成關係)(Composition):
語義更強的聚合,部分和整體具有相同的生命週期,類與關聯關係之間有組合關係,類不存在了,則相應的關聯關係也不存在
箭頭及指向:帶空心菱形的實心線,菱形指向整體
依賴(Dependency):
是一種使用的關係, 即一個類的實現需要另一個類的協助, 所以要儘量不使用雙向的互相依賴.
箭頭及指向:帶普通箭頭的實心線,指向被擁有者
泛化(Generalization):
表示一個更泛化的元素和一個更具體的元素之間的關係,現實世界中一般與特殊關係就是最好的表現。平常講的繼承就屬於泛化。
箭頭及指向:帶三角箭頭的實線,箭頭指向父類
介面實現(Interface Realization):
是一種類與介面的關係, 表示類是介面所有特徵和行為的實現.,將介面的方法實現。
箭頭及指向:帶三角箭頭的虛線,箭頭指向介面