Jhonney的專欄

             ----人見人愛
          隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
          數據加載中……

          [轉]UML學習筆記

          作者:Thatway (mailto:outhatway (at) hotmail (dot) com)
          來自:http://www.hibernate.org.cn

          目 錄


          為什么重要

          您應該使用UML嗎?一個字:是!……新的書、文章等等將會全部以UML作為符號。……如果你正要開始使用建模符號,您就應該直接學習UML

          —— Martin Fowler 1997

          統一建模語言UML(Unified Modeling Language)是一套用于面向對象系統建模的標準符號,在20世紀90年代幾經波折,終于得到對象管理組織OMG(Object Management Group)的支持,成為業界符號系統的統一標準。

          因此,了解它是學習后面技術的前提。這并不是夸張,在看懂(并非精通)UML以前,我壓根沒明白《設計模式》,因為《設》里面就用到象UML那樣的語言——OMT。

          UML無疑是重要,但它能很好的勝任建模工作嗎?關于這個問題,我沒有能力給您一個完美的答復,相關的“討論”也在繼續,但下面的幾個事實相信會給您信心。

          1。UML吸取多種建模語言的優點,包括三位全球頂級方法學家的貢獻。2。它在風雨中崛起,經受考驗。3。UML得到OMG組織及其成員的支持。4。相當多的業界巨頭們也在使用著它。

          學習旅程

          UML體系是如此復雜,可能會讓您覺得難以把握。但是我們只要有選擇性的學習就足夠了,剩下的當日后有需要時再深入研究。

          在學習之前,我們先來做一個說明,UML僅是一門語言,學習UML不等同于學習系統建模,它們的關系就好比學習中文和學習文章寫作那樣。只是很多情況下,我們都會把它們聯系在一起而已。


           

          視圖和圖

           

           

          那好,就讓我們開始吧,先來瀏覽一下UML的全貌。由于我們很難只從一個角度去完整描述一個系統的所有方面。因此UML提供了以下五種視圖,它們分工合作,又互相補充。

          1)    用況視圖(Use Case View)2)    設計視圖(Design View)或邏輯視圖(Logical View)3)    進程視圖(Process View)4)    實現視圖(Implementation View)或組件視圖(Component View)5)    實施視圖(Deployment View)

          而這五個視圖又分別用到以下九種圖中的一種或幾種。

          1)    用況圖2)    類圖3)    對象圖4)    順序圖5)    協作圖6)    狀態圖7)    活動圖8)    構件圖9)    實施圖


           

          相關資源

           

           

          好,看一下相關資源。

          1) 《UML用戶指南》

          此書出自名家,只是部分翻譯欠佳。閱讀時弄清楚上述五個視圖的概念和幾種常用的圖的表示即可,初次閱讀不必深究。

          2) 《UML和模式應用》

          書中示范如何結合UML以增量方式開發一個系統,著重介紹了OO分析的技巧和法則。內容稍嫌羅嗦,但不失為一本好書。

          3) 《UML Distilled》

          另一本入門好書,作為普通使用已經足夠。

          4) 《非程序員》第二期之《用UML設計Java應用程序》

          閱讀這一短篇文章,可以快速了解如何在實際項目中使用UML

          5) http://www.uml.org/

          UML的官方網站,可以找到很多有用資料。

          6) http://www.umlchina.com/

          它發行《非程序員》電子雜志和記錄很多中文文檔,還有一個非常活躍的討論組。

          7) http://www.csdn.net/develop/

          8) http://www-900.ibm.com/developerworks/cn

          這兩個網站可以搜索到很多UML的中文文章,只是比較零散,不大適合系統學習。

           

          再來看一下UML工具。在這方面我沒有很好的經驗,且看看別人怎么說。

          1) 《非程序員》第一期的“選擇一種UML建模工具”介紹了評價UML工具的一系列標準。

          2) UML官方網站資源頁的“UML Tools”欄(鏈接)列出了極多的UML工具,可供選擇。


           

          聚合、關聯和引用

           

          最后,我們討論一下幾個具有“爭議”性的概念——聚合(Aggregation)、組合(Composition)、相識(Acquaintance)、關聯(Association)、依賴(Dependence)和引用(Reference)。它們極具相似性,在代碼的實現上有些甚至是完全一樣的,然而從概念上理解和區分它們對我們的系統分析和設計是有重要意義的。

          聚合是指一個對象擁有另一個對象,僅強調“擁有”。而組合是指一個對象是另一個對象的一部分,強調“不可分割”,兩個對象具有相同的生命周期。兩者的差別就好比創立一間公司時您可以不要雇員(擁有),但創造一個人時您卻不能丟掉了他的心(不可分割)。

          關聯和依賴都是指一個對象知道另一個對象。區別在于關聯是一種結構關系,表現為一個對象能夠獲得另一個對象的實例引用并調用它的服務(即使用它);依賴是一種使用關系,表現為一個對象僅僅是調用了另一個對象的服務。相識既可能是關聯,也可能是依賴。

          引用是指那些指向對象的類屬性。實現組合、聚合和關聯時無可避免的要用到引用,但實現依賴時卻不一定用到。

          總的來說,關聯和依賴是同級的;組合是一種聚合,而聚合是一種關聯;引用則是相對獨立的。

          與此相關的文章有:

          1) 《UML用戶指南》第10章,Booch+詳細講述了依賴和關聯的含義和區別。

          2) 《設計模式》中文版第15~16頁,Gof講述了聚合和相識的差別。

          3) 《非程序員》第二期之《類之間設置成“關聯”OR“依賴”似乎全在個人喜好》是幾位朋友就聚合、關聯和依賴的區別進行的很好的討論。

          至此,如果您對它們的定義持不同意見,又或者覺得難以理解的話,不妨把別人的那一套都拋開,自己把它們重定義一遍。反正我們又不是理論家,就算定義得不科學也沒關系,只要和我們的項目有關的人員都一致的理解和接受就可以了。畢竟有效的溝通才是我們真正的目的。


          實踐建議

          按需剪裁。項目要用到什么就學習什么,暫時不用的就放下。我們的目的是當前的系統建模,而不是一下子成為UML高手。

          自由擴展。結合我們的實際情況,在使用的過程中,要明確UML的重點是“溝通”,其次才是“公共”。UML本身有許多規則和約定,但沒必要一一遵守。只要有利于溝通的,我們就采用,否則就摒棄。通常我們的文檔只是在小范圍里傳播,要統一理解并不困難。當然,當規則定好了后,最好就不要隨意更改了。

          posted on 2007-08-05 17:02 Jhonney 閱讀(443) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 镇宁| 金堂县| 柳河县| 汤阴县| 铜鼓县| 鄱阳县| 徐州市| 安化县| 达日县| 南安市| 淮滨县| 宁强县| 千阳县| 隆德县| 彰化县| 娄烦县| 应用必备| 东乌珠穆沁旗| 莒南县| 揭阳市| 莎车县| 绵阳市| 九江县| 潼关县| 赣榆县| 文成县| 湘西| 峡江县| 余庆县| 开原市| 公安县| 台湾省| 修水县| 衡阳市| 吉木乃县| 龙游县| 长垣县| 夏津县| 东兴市| 灵川县| 封开县|