在我这个系列文章写完之后,我突然发现我漏掉了面向对象设计应该掌握的重要内容——UML,虽然我在前面的文章中提起过UML,但UML对于java的重要程度,是应当单独列文说明的。
UML的重要性,我是没有办法用自己的语言表述清楚的,因而引用《UML设计核心技术》的前言来表述UML的重要性,分外在原因和内在原因。
外在原因:
UML是国际统一的标准,用它表示的产品符合国际标准,产品能够得到广泛的认可,这将提高产品在市场上的竞争力;
作为国际标准,国际软件业和商业届对UML的支持时普遍的,因而采用它,将得到最广泛的技术支持和工具支持。
内在原因:
UML采用图来描述系统的视图,图形化易于理解的特点有利于不同知识背景的客户、领域专家、系统分析、开发、设计人员之间的交流,促使他们的互相理解;
UML是一种标准的表示方法,任何方法或过程都可以采用UML,它与具体的方法和过程无关,具有通用性;
UML具有很好的扩展性,提供了加标签值、约束、版类等机制来进行自我扩展,可使用到不同的领域,在具有通用性的同时,还具有使自己专用化的能力;
UML与最好的软件实践经验集成。它虽然没有描述任何方法或过程,但却要求使用它的过程具有以下特征:以架构为中心、用例驱动、支持迭代和递增的开发,这些特征体现了软件开发的成功经验;
UML对软件设计和分析实践中涌现出的新思想和新方法提供了很好的支持,它支持模式、框架和组件等概念,提供从“概念模式到实现代码”的可跟踪性。
以上引用文字,说明了UML在OOA和OOD中的重要作用,我想在以下几点做一些说明:
UML是进行系统分析、系统设计和系统表示的图形语言,在系统开发中,不同角色的人应重点掌握相应的视图,而非掌握全部。UML有9种视图,我都曾经学过,可是我由于系统设计做的多一些,因而对系统设计这部分的视图熟悉一些如类图、序列图、协作图以及对象图,但对其他的视图,这由于较少使用而有些淡忘。但对于自己经常用的图,要可以白板上熟练绘制相应的UML图。
UML与白板。在系统分析和系统设计阶段,要经常在一起讨论,讨论的时候,白板是UML工具的一个较好选择,这要求熟练掌握UML语言。
UML与UML工具软件。大多数UML工具软件都有将UML的类图和相应的代码相互转换的功能,UML类图——>代码,是代码生成,代码——>UML类图的过程是反向工程。我推荐在进行系统设计时使用UML工具软件。
常用的UML工具有rose、togetherJ和visio 2002,我用过rose和togetherJ,rose由于在很多方面做了增强,因而已经不是标准的UML语言,我不是很赞成使用rose。我比较喜欢使用togetherJ,在项目中,我比较喜欢用togetherJ做设计,设计好之后,自动生成代码框架,再用jbuilder对实现具体方法。