书城计算机大话设计模式
2708800000012

第12章 UML

小A:“师兄,我想请你帮我总结和理解一下类图,因为我学了那么久的编程,类图就是学不好,简单的类图我还可以看懂,有些标记很容易混淆。你能给我讲讲吧!”

大B:“先看看UML的定义:统一建模语言(Unified Modeling Language,UML)是一种绘制软件蓝图的标准语言。”

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

大B:顾名思义,它具备语言的特性:

标准性:元素、规则、机制

逻辑性:严谨

灵活性:同样的事情,不同的正确表述

方言性:利益驱动;翻译版本的混乱

不可盲目模仿性:避免片面借鉴,抓住事务本质和思想灵魂

小A:“嘿嘿!标准性、逻辑性我能理解,什么是灵活性,方言性和不可肓目模仿性?”

大B:“方言性,在一方面是由于软件商家(如微软)追求商业利益、行业标准的制定权和话语权,造成了一些CASE工具未完全遵从UML标准这一混乱现象;另一方面,由于国内翻译的参考教材中文字晦涩难懂、不统一,造成目前的UML的学习门槛高、入门困难的局面。其实,真的,这东西没有这么高深。说到方言性,不得不补充一句,不建议使用VISIO做为UML的CASE工具,UML的三个爸爸早在94、95年分别加入Rational公司,没有理由不使用Rational Rose啊!最值得一提的是它的灵活性、不可盲目模仿性。举个例子吧!”

用例场景:

张无忌,出生于冰火岛,父亲张翠山,母亲殷素素。张无忌的武功大全:武当长拳、九阳神功、武当梯云纵、乾坤大挪移、少林擒龙手、崆峒七伤拳、太极拳剑、圣火令武功。

UML之父:Grady Booch、James Rumbaugh、Ivar Jacobson

Grady Booch 在他的一本书中说:“如果你有好的思想,那么它也是我们的”。这其实从一方面概括了UML的哲学――它吸取已有的精华并且在其上进行OOA/D(面向对象分析和设计)整合和构造。这是最广泛意义上的复用。

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

UML作为草图

非正式的、不完整的图(通常是在白板上手绘草图),借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。

UML作为蓝图(主要方式)

这是UML更加正式和精确的用法,使用UML用于详细规定软件系统。UML模型可被维护,并成为软件的一个重要交付成果。用于:正向工程,逆向工程。这种方法需要使用如Rational Rose建模工具。

UML作为编程语言

使用模型驱动构架(Model Driven Architecture,MDA),给UMl模型添加足够的细节,使得能够从模型中编译生成系统。这是UML最正式和精确的用法,是软件开发的未来。但目前在理论、工具的健壮性和可用性方面仍处于发展阶段。

大B:“还有就是,类图这东西你以后看多了,用多了自然就熟悉了。”

小A:“看来UML类图也不太难嘛!嘿嘿!”

大B:“就是啊!以后就要记住了哦!编程是一门技术,也是一门艺术。不能只满足于写代码运行结果正确,要考虑如何让代码更加简练,更加容易维护,容易扩展和复用,这样才可以真正得到提高。UML类图不是一学就会的,要有一个慢慢熟练的过程。学无止境,理解面向对象的才是真正学习编程的开始!”