UML学习
目 錄
- 為什么重要
- 學(xué)習(xí)旅程
- 視圖和圖
- 相關(guān)資源
- 聚合、關(guān)聯(lián)和引用
- 實(shí)踐建議
為什么重要
您應(yīng)該使用UML嗎?一個(gè)字:是!……新的書、文章等等將會(huì)全部以UML作為符號(hào)。……如果你正要開始使用建模符號(hào),您就應(yīng)該直接學(xué)習(xí)UML。
—— Martin Fowler 1997
統(tǒng)一建模語(yǔ)言UML(Unified Modeling Language)是一套用于面向?qū)ο笙到y(tǒng)建模的標(biāo)準(zhǔn)符號(hào),在20世紀(jì)90年代幾經(jīng)波折,終于得到對(duì)象管理組織OMG(Object Management Group)的支持,成為業(yè)界符號(hào)系統(tǒng)的統(tǒng)一標(biāo)準(zhǔn)。
因此,了解它是學(xué)習(xí)后面技術(shù)的前提。這并不是夸張,在看懂(并非精通)UML以前,我壓根沒明白《設(shè)計(jì)模式》,因?yàn)椤对O(shè)》里面就用到象UML那樣的語(yǔ)言——OMT。
那UML無疑是重要,但它能很好的勝任建模工作嗎?關(guān)于這個(gè)問題,我沒有能力給您一個(gè)完美的答復(fù),相關(guān)的“討論”也在繼續(xù),但下面的幾個(gè)事實(shí)相信會(huì)給您信心。
1。UML吸取多種建模語(yǔ)言的優(yōu)點(diǎn),包括三位全球頂級(jí)方法學(xué)家的貢獻(xiàn)。 2。它在風(fēng)雨中崛起,經(jīng)受考驗(yàn)。 3。UML得到OMG組織及其成員的支持。 4。相當(dāng)多的業(yè)界巨頭們也在使用著它。學(xué)習(xí)旅程
UML體系是如此復(fù)雜,可能會(huì)讓您覺得難以把握。但是我們只要有選擇性的學(xué)習(xí)就足夠了,剩下的當(dāng)日后有需要時(shí)再深入研究。
在學(xué)習(xí)之前,我們先來做一個(gè)說明,UML僅是一門語(yǔ)言,學(xué)習(xí)UML不等同于學(xué)習(xí)系統(tǒng)建模,它們的關(guān)系就好比學(xué)習(xí)中文和學(xué)習(xí)文章寫作那樣。只是很多情況下,我們都會(huì)把它們聯(lián)系在一起而已。
視圖和圖
那好,就讓我們開始吧,先來瀏覽一下UML的全貌。由于我們很難只從一個(gè)角度去完整描述一個(gè)系統(tǒng)的所有方面。因此UML提供了以下五種視圖,它們分工合作,又互相補(bǔ)充。
1) 用況視圖(Use Case View) 2) 設(shè)計(jì)視圖(Design View)或邏輯視圖(Logical View) 3) 進(jìn)程視圖(Process View) 4) 實(shí)現(xiàn)視圖(Implementation View)或組件視圖(Component View) 5) 實(shí)施視圖(Deployment View)而這五個(gè)視圖又分別用到以下九種圖中的一種或幾種。
1) 用況圖 2) 類圖 3) 對(duì)象圖 4) 順序圖 5) 協(xié)作圖 6) 狀態(tài)圖 7) 活動(dòng)圖 8) 構(gòu)件圖 9) 實(shí)施圖
相關(guān)資源
好,看一下相關(guān)資源。
1) 《UML用戶指南》
此書出自名家,只是部分翻譯欠佳。閱讀時(shí)弄清楚上述五個(gè)視圖的概念和幾種常用的圖的表示即可,初次閱讀不必深究。
2) 《UML和模式應(yīng)用》
書中示范如何結(jié)合UML以增量方式開發(fā)一個(gè)系統(tǒng),著重介紹了OO分析的技巧和法則。內(nèi)容稍嫌羅嗦,但不失為一本好書。
3) 《UML Distilled》
另一本入門好書,作為普通使用已經(jīng)足夠。
4) 《非程序員》第二期之《用UML設(shè)計(jì)Java應(yīng)用程序》
閱讀這一短篇文章,可以快速了解如何在實(shí)際項(xiàng)目中使用UML。
5) http://www.uml.org/
UML的官方網(wǎng)站,可以找到很多有用資料。
6) http://www.umlchina.com/
它發(fā)行《非程序員》電子雜志和記錄很多中文文檔,還有一個(gè)非常活躍的討論組。
7) http://www.csdn.net/develop/
8) http://www-900.ibm.com/developerworks/cn
這兩個(gè)網(wǎng)站可以搜索到很多UML的中文文章,只是比較零散,不大適合系統(tǒng)學(xué)習(xí)。
再來看一下UML工具。在這方面我沒有很好的經(jīng)驗(yàn),且看看別人怎么說。
1) 《非程序員》第一期的“選擇一種UML建模工具”介紹了評(píng)價(jià)UML工具的一系列標(biāo)準(zhǔn)。
2) UML官方網(wǎng)站資源頁(yè)的“UML Tools”欄(鏈接)列出了極多的UML工具,可供選擇。
聚合、關(guān)聯(lián)和引用
最后,我們討論一下幾個(gè)具有“爭(zhēng)議”性的概念——聚合(Aggregation)、組合(Composition)、相識(shí)(Acquaintance)、關(guān)聯(lián)(Association)、依賴(Dependence)和引用(Reference)。它們極具相似性,在代碼的實(shí)現(xiàn)上有些甚至是完全一樣的,然而從概念上理解和區(qū)分它們對(duì)我們的系統(tǒng)分析和設(shè)計(jì)是有重要意義的。
聚合是指一個(gè)對(duì)象擁有另一個(gè)對(duì)象,僅強(qiáng)調(diào)“擁有”。而組合是指一個(gè)對(duì)象是另一個(gè)對(duì)象的一部分,強(qiáng)調(diào)“不可分割”,兩個(gè)對(duì)象具有相同的生命周期。兩者的差別就好比創(chuàng)立一間公司時(shí)您可以不要雇員(擁有),但創(chuàng)造一個(gè)人時(shí)您卻不能丟掉了他的心(不可分割)。
關(guān)聯(lián)和依賴都是指一個(gè)對(duì)象知道另一個(gè)對(duì)象。區(qū)別在于關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,表現(xiàn)為一個(gè)對(duì)象能夠獲得另一個(gè)對(duì)象的實(shí)例引用并調(diào)用它的服務(wù)(即使用它);依賴是一種使用關(guān)系,表現(xiàn)為一個(gè)對(duì)象僅僅是調(diào)用了另一個(gè)對(duì)象的服務(wù)。相識(shí)既可能是關(guān)聯(lián),也可能是依賴。
引用是指那些指向?qū)ο蟮念悓傩浴?shí)現(xiàn)組合、聚合和關(guān)聯(lián)時(shí)無可避免的要用到引用,但實(shí)現(xiàn)依賴時(shí)卻不一定用到。
總的來說,關(guān)聯(lián)和依賴是同級(jí)的;組合是一種聚合,而聚合是一種關(guān)聯(lián);引用則是相對(duì)獨(dú)立的。
與此相關(guān)的文章有:
1) 《UML用戶指南》第10章,Booch+詳細(xì)講述了依賴和關(guān)聯(lián)的含義和區(qū)別。
2) 《設(shè)計(jì)模式》中文版第15~16頁(yè),Gof講述了聚合和相識(shí)的差別。
3) 《非程序員》第二期之《類之間設(shè)置成“關(guān)聯(lián)”O(jiān)R“依賴”似乎全在個(gè)人喜好》是幾位朋友就聚合、關(guān)聯(lián)和依賴的區(qū)別進(jìn)行的很好的討論。
至此,如果您對(duì)它們的定義持不同意見,又或者覺得難以理解的話,不妨把別人的那一套都拋開,自己把它們重定義一遍。反正我們又不是理論家,就算定義得不科學(xué)也沒關(guān)系,只要和我們的項(xiàng)目有關(guān)的人員都一致的理解和接受就可以了。畢竟有效的溝通才是我們真正的目的。
實(shí)踐建議
按需剪裁。項(xiàng)目要用到什么就學(xué)習(xí)什么,暫時(shí)不用的就放下。我們的目的是當(dāng)前的系統(tǒng)建模,而不是一下子成為UML高手。
自由擴(kuò)展。結(jié)合我們的實(shí)際情況,在使用的過程中,要明確UML的重點(diǎn)是“溝通”,其次才是“公共”。UML本身有許多規(guī)則和約定,但沒必要一一遵守。只要有利于溝通的,我們就采用,否則就摒棄。通常我們的文檔只是在小范圍里傳播,要統(tǒng)一理解并不困難。當(dāng)然,當(dāng)規(guī)則定好了后,最好就不要隨意更改了。
轉(zhuǎn)載于:https://www.cnblogs.com/dfsxh/archive/2008/09/20/1294587.html
總結(jié)
- 上一篇: 安装FTP服务器并配置虚拟用户账号
- 下一篇: linux 下DHCP的安装