第12章

小A:“師兄,我想請你幫我總結和理解一下類圖,因為我學了那麽久的編程,類圖就是學不好,簡單的類圖我還可以看懂,有些標記很容易混淆。你能給我講講吧!”

大B:“先看看UML的定義:統一建模語言(UnifiedModelingLanguage,UML)是一種繪製軟件藍圖的標準語言。”

小A:“那它有什麽特性?”

大B:顧名思義,它具備語言的特性:

標準性:元素、規則、機製

邏輯性:嚴謹

靈活性:同樣的事情,不同的正確表述

方言性:利益驅動;翻譯版本的混亂

不可盲目模仿性:避免片麵借鑒,抓住事務本質和思想靈魂

小A:“嘿嘿!標準性、邏輯性我能理解,什麽是靈活性,方言性和不可肓目模仿性?”

大B:“方言性,在一方麵是由於軟件商家(如微軟)追求商業利益、行業標準的製定權和話語權,造成了一些CASE工具未完全遵從UML標準這一混亂現象;另一方麵,由於國內翻譯的參考教材中文字晦澀難懂、不統一,造成目前的UML的學習門檻高、入門困難的局麵。其實,真的,這東西沒有這麽高深。說到方言性,不得不補充一句,不建議使用VISIO做為UML的CASE工具,UML的三個爸爸早在94、95年分別加入Rational公司,沒有理由不使用RationalRose啊!最值得一提的是它的靈活性、不可盲目模仿性。舉個例子吧!”

用例場景:

張無忌,出生於冰火島,父親張翠山,母親殷素素。張無忌的武功大全:武當長拳、九陽神功、武當梯雲縱、乾坤大挪移、少林擒龍手、崆峒七傷拳、太極拳劍、聖火令武功。

UML之父:GradyBooch、JamesRumbaugh、IvarJacobson

GradyBooch在他的一本書中說:“如果你有好的思想,那麽它也是我們的”。這其實從一方麵概括了UML的哲學——它吸取已有的精華並且在其上進行OOA/D(麵向對象分析和設計)整合和構造。這是最廣泛意義上的複用。

大B:在正式上手去應用UML之前,再了解一下應用UML的三種方式,包括:

UML作為草圖

非正式的、不完整的圖(通常是在白板上手繪草圖),借助可視化語言的功能,用於探討問題或解決方案空間的複雜部分。

UML作為藍圖(主要方式)

這是UML更加正式和精確的用法,使用UML用於詳細規定軟件係統。UML模型可被維護,並成為軟件的一個重要交付成果。用於:正向工程,逆向工程。這種方法需要使用如RationalRose建模工具。

UML作為編程語言

使用模型驅動構架(ModelDrivenArchitecture,MDA),給UMl模型添加足夠的細節,使得能夠從模型中編譯生成係統。這是UML最正式和精確的用法,是軟件開發的未來。但目前在理論、工具的健壯性和可用性方麵仍處於發展階段。

大B:“還有就是,類圖這東西你以後看多了,用多了自然就熟悉了。”

小A:“看來UML類圖也不太難嘛!嘿嘿!”

大B:“就是啊!以後就要記住了哦!編程是一門技術,也是一門藝術。不能隻滿足於寫代碼運行結果正確,要考慮如何讓代碼更加簡練,更加容易維護,容易擴展和複用,這樣才可以真正得到提高。UML類圖不是一學就會的,要有一個慢慢熟練的過程。學無止境,理解麵向對象的才是真正學習編程的開始!”