UML類圖簡單介紹

UML類圖用來定義系統(tǒng)中的類,包括描述類的結(jié)構(gòu)和類之間的關(guān)系燥翅。類圖的主要作用于描述系統(tǒng)的靜態(tài)結(jié)構(gòu)骑篙。
先看一張圖(圖片截取自AmaterasUML):

實體

組成

一般包含3個組成部分:類名、屬性森书、方法
類的性質(zhì)可以放在第四部分
如果類中含有內(nèi)部類靶端,則會出現(xiàn)下一個組成部分
類名部分是不能省略的,其他組成部分可以省略

書寫規(guī)范
類名:正體字說明類是可被實例化的凛膏,斜體字說明類為抽象類杨名。
屬性:<修飾符> <<描述信息>> <屬性名>: <類型>
方法:<修飾符> <<描述信息>> <方法名> (<參數(shù):類型 ...>): <返回類型>

修飾符:+表示public;-表示private猖毫;#表示protected台谍;省略表示包可見性。
如果屬性/方法具有下劃線吁断,則說明它是靜態(tài)的趁蕊。
描述信息使用 << >> 包裹。
類的性質(zhì)是由一個屬性仔役、一個賦值方法和一個取值方法組成掷伙。

栗子
public class TaxCalculator {        
    private long taxRate ;  
    private int salary;  

    public TaxCalculator(long taxRate) {  
        this.taxRate = taxRate ;  
    }  
    
    public long countTax() {  
        return taxRate * salary;  
    }  
 
    public int getSalary() {  
        return salary;  
    }  
    
    public void setSalary(int salary) {  
        this.salary = salary;  
    }
}

接口

接口是一系列操作的集合,它指定了提供的一系列服務(wù)又兵。它直接對應(yīng)于Java中的一個接口類型任柜。接口的表示有大概兩種方式。具體畫法如下:

public interface TaxCalculator  
{ 
    public long countTax();  
    public int getSalary();  
    public void setSalary(int salary);  
}   

當然也有這樣的畫法:

關(guān)系

依賴(Dependency)

依賴是一種弱關(guān)聯(lián)沛厨,只要一個類用到另一個類宙地,但是和另一個類的關(guān)系不是太明顯的時候,就可以使用依賴關(guān)系

【依賴關(guān)系】:是一種使用的關(guān)系逆皮,即一個類的實現(xiàn)需要另一個類的協(xié)助宅粥,所以要盡量不使用雙向的互相依賴
【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用
【箭頭及指向】:帶箭頭的虛線页屠,指向被使用者

關(guān)聯(lián)(Association)

表示類與類之間的連接粹胯。它使一個類的可見屬性和方法被另一個類使用。是兩個類辰企、或者類與接口之間語義級別的一種強依賴關(guān)系风纠,不存在依賴關(guān)系的偶然性、臨時性牢贸。一般是長期性的竹观,而且雙方的關(guān)系一般是平等的

【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法;關(guān)聯(lián)可以是雙向的臭增,也可以是單向的懂酱。雙向的關(guān)聯(lián)的箭頭是可選的,單向的箭頭指向遍歷或者查詢的方向誊抛。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶普通箭頭的實心線列牺,指向被擁有者

在關(guān)聯(lián)關(guān)系中可以使用附加的基數(shù)來說明類之間對應(yīng)的個數(shù):

基數(shù) 含義
0..1 零個或者一個實例
0..* 沒有限制,任意
* 沒有限制拗窃,任意
1 有且只能一個實例
1..* 至少有一個實例

注意:一個關(guān)聯(lián)關(guān)系往往是聚合關(guān)系或者是合成關(guān)系瞎领。

泛化(Generalization)

表示類與類、接口與接口之間的繼承關(guān)系随夸。

【泛化關(guān)系】:是一種繼承關(guān)系九默,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為宾毒。
【代碼體現(xiàn)】:父類與子類(extends)
【箭頭指向】:帶三角箭頭的實線驼修,箭頭指向父類

實現(xiàn)(Realization)

實現(xiàn)關(guān)系指定兩個實體之間的一個合同。換言之诈铛,一個實體定義一個合同乙各,而另一個實體保證履行該合同。

【實現(xiàn)關(guān)系】:是一種類與接口的關(guān)系癌瘾,表示類是接口所有特征和行為的實現(xiàn)
【代碼體現(xiàn)】:接口與實現(xiàn)類(implements)
【箭頭指向】:帶三角箭頭的虛線觅丰,箭頭指向接口

聚合(Aggregation)

聚合是關(guān)聯(lián)的一種形式饵溅,代表兩個類之間的整體/局部關(guān)系妨退,他體現(xiàn)的是一種has-a的關(guān)系。聚合暗示著整體在概念上處于比局部更高的一個級別蜕企,而關(guān)聯(lián)暗示兩個類在概念上位于相同的級別咬荷。聚合還暗示著實例圖中不存在回路,換言之轻掩,只能是一種單向關(guān)系幸乒。

【聚合關(guān)系】:整體與部分的關(guān)系,且部分可以離開整體而單獨存在唇牧,可以具有各自的生命周期罕扎。關(guān)聯(lián)和聚合的區(qū)別純粹是概念上的,在Java語法上無法分辨丐重。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶空心菱形的實心線腔召,菱形指向整體

組合(Composite)

組合也是關(guān)聯(lián)關(guān)系的一種特例,他體現(xiàn)的是一種contains-a的關(guān)系扮惦,這種關(guān)系比聚合更強臀蛛,也稱為強聚合;他同樣體現(xiàn)整體與部分間的關(guān)系,但此時整體與部分是不可分的浊仆,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束客峭;比如你和你的大腦。組合關(guān)系是不能共享的抡柿。

【組合關(guān)系】:是整體與部分的關(guān)系舔琅,但部分不能離開整體而單獨存在。它要求普通的聚合關(guān)系中代表整體的對象負責代表部分的對象的生命周期洲劣。
【代碼體現(xiàn)】:成員變量
【箭頭及指向】:帶實心菱形的實線搏明,菱形指向整體

總結(jié)

關(guān)系總結(jié)

泛化:表示類與類之間的繼承關(guān)系、接口與接口之間的繼承關(guān)系闪檬;
實現(xiàn):表示類對接口的實現(xiàn)星著;
依賴:當類與類之間有使用關(guān)系時就屬于依賴關(guān)系,不同于關(guān)聯(lián)關(guān)系粗悯,依賴不具有“擁有關(guān)系”虚循,而是一種“相識關(guān)系”,只在某個特定地方(比如某個方法體內(nèi))才有關(guān)系样傍。
關(guān)聯(lián):表示類與類或類與接口之間的依賴關(guān)系横缔,表現(xiàn)為“擁有關(guān)系”;具體到代碼可以用實例變量來表示衫哥;
聚合:屬于關(guān)聯(lián)的特殊情況茎刚,體現(xiàn)部分-整體關(guān)系,是一種弱擁有關(guān)系撤逢;整體和部分可以有不一樣的生命周期膛锭;
組合:屬于關(guān)聯(lián)的特殊情況,體現(xiàn)部分-整體關(guān)系蚊荣,是一種強“擁有關(guān)系”初狰。

關(guān)系強弱

泛化=實現(xiàn)>組合>聚合>關(guān)聯(lián)>依賴

畫法

繼承、實現(xiàn)是三角型箭頭互例,其他都為箭頭
組合奢入、聚合都有一個菱形端,且都為實線媳叨,其他都無菱形端
繼承是實線腥光,實現(xiàn)是虛線;關(guān)聯(lián)是實線糊秆,依賴是虛線
箭頭:指向父類或接口武福、依賴物、子元素扩然。

看個經(jīng)典例子

說明:

實現(xiàn):空心圓+直線(唐老鴨類實現(xiàn)了‘講人話’)艘儒;
實現(xiàn):空心三角形+虛線(實現(xiàn)大雁飛翔的接口);
依賴:虛線+箭頭(動物和空氣的關(guān)系);
關(guān)聯(lián):實線+箭頭(企鵝需要知道氣候才遷移)界睁;
聚合:空心四邊形+實線+箭頭(雁群和大雁的關(guān)系)觉增;
合成/組合:實心四邊形+實線+箭頭(鳥和翅膀的關(guān)系);
泛化/繼承:空心三角形+實線(動物和鳥的繼承關(guān)系)翻斟。

想要具體剖析本圖逾礁,請查看這里PS:文中圖片來自于網(wǎng)絡(luò)访惜,侵刪嘹履。

參考

UML類圖介紹及畫法
UML類圖幾種關(guān)系的總結(jié)
UML類圖關(guān)系
UML類圖實例

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市债热,隨后出現(xiàn)的幾起案子砾嫉,更是在濱河造成了極大的恐慌,老刑警劉巖窒篱,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焕刮,死亡現(xiàn)場離奇詭異,居然都是意外死亡墙杯,警方通過查閱死者的電腦和手機配并,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來高镐,“玉大人溉旋,你說我怎么就攤上這事〖邓瑁” “怎么了观腊?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岩喷。 經(jīng)常有香客問我恕沫,道長监憎,這世上最難降的妖魔是什么纱意? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鲸阔,結(jié)果婚禮上偷霉,老公的妹妹穿的比我還像新娘。我一直安慰自己褐筛,他們只是感情好类少,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渔扎,像睡著了一般硫狞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天残吩,我揣著相機與錄音财忽,去河邊找鬼。 笑死泣侮,一個胖子當著我的面吹牛即彪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播活尊,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼隶校,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛹锰?” 一聲冷哼從身側(cè)響起深胳,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铜犬,沒想到半個月后稠屠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡翎苫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年权埠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煎谍。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡攘蔽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呐粘,到底是詐尸還是另有隱情满俗,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布作岖,位于F島的核電站唆垃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痘儡。R本人自食惡果不足惜辕万,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沉删。 院中可真熱鬧渐尿,春花似錦、人聲如沸矾瑰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殴穴。三九已至凉夯,卻和暖如春货葬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劲够。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工宝惰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人再沧。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓尼夺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炒瘸。 傳聞我的和親對象是個殘疾皇子淤堵,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 先上一張圖: 概述 類圖(Class Diagram)是面向?qū)ο笙到y(tǒng)建模中最常用和最重要的圖,是定義其它圖的基礎(chǔ)顷扩。...
    seay閱讀 1,465評論 2 3
  • 忘記了uml類圖連線之間的關(guān)系拐邪,記錄一下。 1. 關(guān)聯(lián)關(guān)系 關(guān)聯(lián)(Association)關(guān)系是類與類之間最常用的...
    cutieagain閱讀 1,811評論 0 2
  • 在UML 2.0的13種圖形中隘截,類圖是使用頻率最高的UML圖之一扎阶。Martin Fowler在其著作《UML Di...
    雷雷_zll閱讀 13,204評論 0 14
  • 1、概述 在UML 2.0的13種圖形中婶芭,類圖是使用頻率最高的UML圖之一东臀。Martin Fowler在其著作《U...
    liumw1203閱讀 6,095評論 0 7