1. 程式人生 > >類於類圖標準總結1(UML類圖到底怎麼畫?)

類於類圖標準總結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):

是一種類與介面的關係, 表示類是介面所有特徵和行為的實現.,將介面的方法實現。

箭頭及指向​​​​:帶三角箭頭的虛線,箭頭指向介面​​​​​​​