Java 大黑話講解設(shè)計(jì)模式 -- UML類圖

前言

關(guān)于UML類圖的這篇文章氢烘,我覺得把它放在設(shè)計(jì)模式專欄的篇首最為合適,因?yàn)樵趯W(xué)習(xí)設(shè)計(jì)模式的時(shí)候宠叼,經(jīng)常會(huì)遇到有關(guān)UML類圖,沒有去專門學(xué)過的童鞋肯定會(huì)感覺很復(fù)雜其爵。學(xué)到后面冒冬,發(fā)現(xiàn)不掌握UML類圖,對(duì)設(shè)計(jì)模式或者某一個(gè)框架沒有整體的把控醋闭。所以學(xué)好UML類圖窄驹,你將會(huì)更加有自信!

如果你對(duì)類之間的依賴证逻、聚合乐埠、關(guān)聯(lián)、組合等關(guān)系還很抵制的話囚企,那么這篇文章就很有必要看了丈咐,隨著對(duì)設(shè)計(jì)模式的慢慢深入了解,或許你也會(huì)發(fā)現(xiàn)龙宏,UML類圖就顯得格外重要了棵逊,是的,UML類圖主要是用來描述類之間的輪廓圖银酗,而類之間的常見關(guān)系就是泛化(Generalization)辆影、實(shí)現(xiàn)(Realization)徒像、依賴(Dependence)、關(guān)聯(lián)(Association)蛙讥、聚合(Aggregation)锯蛀、組合(Composition)等。類之間關(guān)系的強(qiáng)弱:依賴 < 關(guān)聯(lián) < 聚合 < 組合 < 泛化(繼承)

@[toc]

1次慢、啥是UML類圖旁涤?

首先來看一個(gè)專業(yè)一點(diǎn)的定義【來自維基百科】

UML即統(tǒng)一建模語言(Unified Modeling Language),它是一種開放的方法,用于說明迫像、可視化劈愚、構(gòu)建和編寫一個(gè)正在開發(fā)的、面向?qū)ο蟮奈偶恕④浖芗到y(tǒng)的制品的開放方法菌羽。UML展現(xiàn)了一系列最佳工程實(shí)踐,這些最佳實(shí)踐在對(duì)大規(guī)模由缆,復(fù)雜系統(tǒng)進(jìn)行建模方面算凿,特別是在軟件架構(gòu)層次已經(jīng)被驗(yàn)證有效。

不得不說犁功,越專業(yè)的描述越讓人看得越發(fā)懵逼...

其實(shí)吧,簡單的說就是UML它也是一種語言婚夫,只不過這種語言比較特殊浸卦,UML圖有很多種,其中最為重要的就是UML類圖了案糙,所以我們的重心就是UML類圖限嫌。uml類圖是一種靜態(tài)的結(jié)構(gòu)圖,描述了系統(tǒng)的類的集合时捌,類的屬性和類之間的關(guān)系怒医,可以簡化了人們對(duì)系統(tǒng)的理解.

2、UML類圖有啥用奢讨?

這么說吧稚叹,2019年11月27號(hào),程序員宜春給程序員老王打電話拿诸,兩哥們聊著聊著就聊起了設(shè)計(jì)模式扒袖,宜春說了一大堆關(guān)于工廠模式的應(yīng)用場景舉例,有場景有實(shí)例亩码,可謂聲情并茂季率。然而老王卻是聽的一臉懵逼:你尋思啥啊,說了一大堆 * 話描沟,別嗶嗶了飒泻,直接給我畫上UML類圖就得了鞭光,一天天的就會(huì)裝b,我忍你很久了...

是的泞遗,通過上面的這段對(duì)話惰许,我相信各位也應(yīng)該能身臨其境的體會(huì)到UML類圖的核心作用了,那我就不再多嗶嗶了...

3刹孔、正式理解UML類圖

絕大多數(shù)的類圖分為三個(gè)部分啡省。部分類圖有五個(gè)部分。我們這里主要講絕大多數(shù)的類圖髓霞。

UML類圖的構(gòu)建有很多種工具或者插件卦睹,可以用PowerDesign 來構(gòu)建 UML圖,當(dāng)然像我這么優(yōu)(懶)秀(癌)的人肯定是用idea自帶的功能自動(dòng)生成方库,同時(shí)eclipse也是支持的结序!

4、使用idea畫第一個(gè)UML類圖

首先去Setting中設(shè)置一下UML類圖的顯示設(shè)置纵潦,上一節(jié)也說過徐鹤,絕大部分類圖都是前三部分,因此勾選前三個(gè)勾就OK了邀层,操作如下:

下面宜春就以身試水用idea來展示一段簡單的UML圖:

首先編寫一段簡單的Weixin類代碼:

classWeiXin{? ? public int a;//公有的public屬性? ====1private int b;//私有的private屬性 ====2publicStringWXInfo(){//成員方法====3}}

然后把剛編寫的Weixin類進(jìn)行如下操作:

這也忒簡單了吧返敬,小白們都笑出聲來了。當(dāng)然也可以在idea中安裝一些UML圖插件寥院,這里就不再闡述了劲赠。

5、類之間的關(guān)系圖【必須牢記】

UML類圖主要是用來描述類之間的輪廓圖秸谢,而類之間的常見關(guān)系就是泛化凛澎、實(shí)現(xiàn)、依賴估蹄、關(guān)聯(lián)塑煎、聚合、組合等臭蚁。表示關(guān)系的強(qiáng)弱:依賴 < 關(guān)聯(lián) < 聚合 < 組合 < 泛化(繼承)

在講解類之間的關(guān)系之前最铁,我們很有必要來了解關(guān)系線條圖,這個(gè)特別重要簡直就是UML類圖的靈魂【必須牢記】:

6刊棕、類之間的關(guān)系

有了上面關(guān)系線條圖的概念后炭晒,我們正式開始來學(xué)習(xí)類之間的關(guān)系!

6.1甥角、依賴

依賴關(guān)系是類與類之間最弱的關(guān)系网严,B調(diào)用A的方法或者屬性,A變化會(huì)影響B(tài)嗤无,反之不成立震束。依賴差不多就是使用的意思怜庸,B使用了A的方法或?qū)傩赃@個(gè)時(shí)候我們就稱為B依賴A。說簡單點(diǎn)就是一個(gè)類使用了另一個(gè)類垢村,這種關(guān)系具有臨時(shí)性特征割疾,一個(gè)類的改變由于另一類而受影響。

classA{? ? publicvoidmethodA(){ }}classB{? public A a;? publicvoidmethodB(){? ? a.methodA();? }}

上面代碼:? B依賴A

依賴小結(jié):

1嘉栓、依賴就是類中使用到了對(duì)方

2宏榕、使用可以包括:使用其成員屬性、作為返回類型侵佃、作為參數(shù)類型麻昼、方法中使用到

6.2、泛化

泛化就是繼承馋辈,注意一點(diǎn)就是泛化也是依賴關(guān)系的一種特例

6.3抚芦、實(shí)現(xiàn)

實(shí)現(xiàn)就是接口的實(shí)現(xiàn),太簡單了迈螟,小白都笑了....

6.4叉抡、關(guān)聯(lián)

關(guān)聯(lián)關(guān)系是一種比較強(qiáng)的關(guān)系,同樣也是依賴關(guān)系的特例答毫,關(guān)聯(lián)具有導(dǎo)航型:單向關(guān)聯(lián)褥民、雙向關(guān)聯(lián)

怎么理解呢,比如有兩個(gè)類洗搂,一個(gè)Person類轴捎,一個(gè)身份證IDcard類

單向關(guān)聯(lián)

classIDcard{}classPerson{? private IDcard card;}

雙向關(guān)聯(lián)

classIDcard{? private Person person;}classPerson{? private IDcard card;}

在這里插入圖片描述

6.5、聚合

聚合關(guān)系是一種特殊的關(guān)聯(lián)關(guān)系蚕脏,聚合關(guān)系強(qiáng)調(diào)的是整體和部分的關(guān)系,其中部分可以脫離整體而存在侦锯。比如電視機(jī)和遙控器驼鞭。

classTV{}classTelecontrol{//遙控器類private TV tv;}

在這里插入圖片描述

6.6、組合

組合關(guān)系也是一種特殊的關(guān)聯(lián)關(guān)系尺碰,它與聚合關(guān)系很像挣棕,組合關(guān)系強(qiáng)調(diào)的也是整體和部分的關(guān)系,其中部分不可以脫離整體而存在亲桥。有種同生共死的意思洛心!比如:高尚的說就是宜春可以沒有頭發(fā)但是不能沒有腦袋,可憐一點(diǎn)的說就是宜春可以沒有手和腳但是不能沒有腦袋题篷!頭發(fā)词身、手、腳這些并不是必須要有的番枚,組合強(qiáng)調(diào)的是不可分離而可以存在法严!如果你在大街上看到宜春沒有頭發(fā)损敷,不是很正常嘛?沒有手沒有腳也能接受理解深啤。那你在大街上看到宜春沒有腦袋拗馒,這....(這例子舉的我自己都服了)

classHair{//頭發(fā)}classHead{//腦袋}classYiChun{//宜春Head head =newHead();//Head與宜春同生共死private Hair hair;}

在這里插入圖片描述

7、簡單總結(jié)類之間的六種關(guān)系

1溯街、依賴就是類中使用到了對(duì)方诱桂。使用:使用其成員屬性、作為返回類型呈昔、作為參數(shù)類型挥等、方法中使用到2、泛化就是繼承韩肝,泛化也是依賴關(guān)系的一種特例3触菜、實(shí)現(xiàn)就是接口的實(shí)現(xiàn),太簡單了哀峻,小白都笑了....4涡相、關(guān)聯(lián)是一種比較強(qiáng)的關(guān)系,是依賴關(guān)系的特例剩蟀,關(guān)聯(lián)具有導(dǎo)航型:單向關(guān)聯(lián)催蝗、雙向關(guān)聯(lián)5、聚合是一種特殊的關(guān)聯(lián)關(guān)系育特,聚合強(qiáng)調(diào)整體和部分的關(guān)系丙号,可有可無!6缰冤、組合是一種特殊的關(guān)聯(lián)關(guān)系犬缨,與聚合關(guān)系很像,同生共死棉浸!

類之間關(guān)系的強(qiáng)弱:依賴 < 關(guān)聯(lián) < 聚合 < 組合 < 泛化(繼承)

如果本文對(duì)你有一點(diǎn)點(diǎn)幫助怀薛,那么請(qǐng)點(diǎn)個(gè)贊唄,謝謝~

最后迷郑,若有不足或者不正之處枝恋,歡迎指正批評(píng),感激不盡嗡害!如果有疑問歡迎留言焚碌,絕對(duì)第一時(shí)間回復(fù)!

歡迎各位關(guān)注我的公眾號(hào)霸妹,一起探討技術(shù)十电,向往技術(shù),追求技術(shù),說好了來了就是盆友喔...

在這里插入圖片描述

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摆出,一起剝皮案震驚了整個(gè)濱河市朗徊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偎漫,老刑警劉巖爷恳,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異象踊,居然都是意外死亡温亲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門杯矩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栈虚,“玉大人,你說我怎么就攤上這事史隆』晡瘢” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵泌射,是天一觀的道長粘姜。 經(jīng)常有香客問我,道長熔酷,這世上最難降的妖魔是什么孤紧? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮拒秘,結(jié)果婚禮上号显,老公的妹妹穿的比我還像新娘。我一直安慰自己躺酒,他們只是感情好押蚤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羹应,像睡著了一般活喊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上量愧,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音帅矗,去河邊找鬼偎肃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛浑此,可吹牛的內(nèi)容都是我干的累颂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼紊馏!你這毒婦竟也來了料饥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤朱监,失蹤者是張志新(化名)和其女友劉穎岸啡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赫编,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巡蘸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了擂送。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悦荒。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘹吨,靈堂內(nèi)的尸體忽然破棺而出搬味,到底是詐尸還是另有隱情,我是刑警寧澤蟀拷,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布碰纬,位于F島的核電站,受9級(jí)特大地震影響匹厘,放射性物質(zhì)發(fā)生泄漏嘀趟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一愈诚、第九天 我趴在偏房一處隱蔽的房頂上張望她按。 院中可真熱鬧,春花似錦炕柔、人聲如沸酌泰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陵刹。三九已至,卻和暖如春欢嘿,著一層夾襖步出監(jiān)牢的瞬間衰琐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工炼蹦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羡宙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓掐隐,卻偏偏與公主長得像狗热,于是被迫代替她去往敵國和親钞馁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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