大象--Thinking in UML(china-pub全国独家首发)(09年度畅销榜NO.3)(此书版权已经输出到台湾)
基本信息
- 作者: 谭云杰
- 出版社:中国水利水电出版社
- ISBN:9787508460468
- 上架时间:2008-11-20
- 出版日期:2009 年1月
- 开本:16开
- 页码:481
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > UML
编辑推荐
这是一本令众多开发网友企盼了一年之久的书.
这是一本讲分析、设计、建模与统一软件过程的书
这是一本将晦涩的概念与项目的实践紧密结合的书..
这是一本充满思想和智慧的书
这不是一本一般的书...
推荐阅读
内容简介回到顶部↑
本书以uml为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解得津津有味。
全书分为准备篇、基础篇、进阶篇和总结篇四个部分。准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对uml的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对uml的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例贯穿全篇,阐述如何使用uml从头到尾地实施一个项目。总结篇针对在现实中经常遇到并且较难掌握的问题进行深入的探讨,升华在前几篇学习到的知识。
本书可供正在学习编程、软件工程等知识,准备将来从事it行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。
全书分为准备篇、基础篇、进阶篇和总结篇四个部分。准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对uml的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对uml的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例贯穿全篇,阐述如何使用uml从头到尾地实施一个项目。总结篇针对在现实中经常遇到并且较难掌握的问题进行深入的探讨,升华在前几篇学习到的知识。
本书可供正在学习编程、软件工程等知识,准备将来从事it行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。
作译者回到顶部↑
目录回到顶部↑
大象希形
写给读者的话
关于本书
如何阅读本书
光盘使用说明
第一部分 准备篇——需要了解
第1章 为什么需要uml
第2章 建模基础
第二部分 基础篇——在学习中思考
第3章 uml核心元素
第4章 uml核心视图
第5章 uml核心模型
第6章 统一过程核心工作流简介
第三部分 进阶篇——在实践中思考
第8章 准备工作
第9章 获取需求
第10章 需求分析
第11章 系统分析
第12章 系统设计
第13章 开发
写给读者的话
关于本书
如何阅读本书
光盘使用说明
第一部分 准备篇——需要了解
第1章 为什么需要uml
第2章 建模基础
第二部分 基础篇——在学习中思考
第3章 uml核心元素
第4章 uml核心视图
第5章 uml核心模型
第6章 统一过程核心工作流简介
第三部分 进阶篇——在实践中思考
第8章 准备工作
第9章 获取需求
第10章 需求分析
第11章 系统分析
第12章 系统设计
第13章 开发
前言回到顶部↑
提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in Java》。之所以《Thinking in Java》会成为经典,原因在于这本书并不是教授读者Java语言本身,而是透过Java语言深入讨论其背后的思想和方法。授人以鱼不如授人以渔。.
本书是讲述UML的。同样,本书也不是一本纯粹教授UML语法的书籍,而是通过UML这个表象来深入探讨面向对象的分析方法;同时将结合软件工程,传达基于对象的思考方法、分析模式和推导过程以及它们在软件工程的各个阶段如何发挥作用。本书冠以Thinking in UML这一名称正是为了切合这个主题。作者不敢奢望本书会成为《Thinking in Java》一样的经典书籍,但是作者在本书中倾尽了自己在面向对象分析和设计领域中的实践和经验积累。至少对那些尚未能够深入此领域,感觉面向对象仍然似是而非的朋友们,本书中将要传达的那些思路将会是一条线索,至少能够帮助你找到通往面向对象分析的大门。
本书在编写过程中,以大量实际项目中会遇到的实例引出问题,讲述作者对这一问题的分析思路和解决办法。再进一步升华,通过对实例的评点,分析思路的归纳和扩展,上升到面向对象方法理论。逐步引导读者由点到面,由表及里,最后由对工具的使用上升到思想的高度,从而能够自如地跳出工具使用的局限,真正从方法和思想的高度来看待和解决现实的问题。本书中的很多内容和思想将是你在其他书籍中看不到的。
本书分为四部分,由浅入深,从基础到高级,每个章节都有具体的实例进行说明,同时作者将耗费更多的篇幅来评点和阐述这些实例。在某些章节最后还会就一些关键概念和不容易理解的地方提出问题,让读者自行思考。
第一部分为准备篇,需要了解。在这一部分中,作者将从面向对象的困难和需要入手,讲述面向对象分析的一些基本概念,由此提出为什么需要UML这一话题。另一方面,也讲述了接下来学习建模需要了解的一些基本知识。
第二部分为基础篇,在学习中思考。在这一部分中,作者将从实用的角度对UML的基础概念重新组织和归纳整理,同时进行一些扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。这些内容将覆盖绝大部分实际工作的需要。通过这一部分的学习,读者将从另一个角度了解UML,知道UML能够做什么。
第三部分为进阶篇,在实践中思考。在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的代码。并且这个过程将是可验证的和可追溯的。读者在阅读本部分的时候,应关注分析过程和推导过程,思考从需求到实现是如何保证可验证性和可追溯性的。通过这一部分的学习,读者将能够学会如何使用UML来从头到尾地实施一个项目。
第四部分为总结篇,在提炼中思考。在这一部分中,每个章节均会针对一个在现实中经常遇到并且较难掌握的问题进行深入的探讨。这些探讨将有助于提升面向对象的思考能力,升华在前两部分学习到的知识。
本书中用到的UML图使用Rose绘制,完整的工程文件收录在本书附带的光盘中。
由于作者水平有限,很多内容是自己的经验总结,出现错误在所难免,欢迎广大读者批评指正。读者在阅读本书的过程中有任何不清楚的问题和批评建议,可以到作者的博客http://blog.csdn.net/coffeewoo或http://coffeewoo.itpub.net留言,或者发邮件到coffeewoo@gmail.com,作者将尽力给您答疑解惑,您的批评建议也将鞭策作者做得更好。 ..
如何阅读本书
本书并不是一本纯粹的入门书籍。尽管在准备篇和基础篇当中也会大量讲解面向对象和UML的基础知识,不过作者仍然假设读者具备基础的面向对象知识,掌握至少一门面向对象的语言,最好参与过一个完整的软件项目。虽然这些上述的假设并不妨碍读者学习本书中的知识,但是如果具有这些经验,对书中提到的一些解决问题的思路会有更深刻的体会,也更有助于理解书中的一些内容。
作者预期的读者大约有如下几类:
正在学习编程、软件工程等知识,准备将来从事IT行业的读者。这类读者最缺乏的知识是对实际项目了解,难以体会一个完整的项目与编写几千行代码之间的差别,毕竟,曾经在书本上所学的知识与实践需要是有距离的。本书展示了一个完整的软件生命周期,它将有助于读者将课本中学到的知识与真正的项目开发实践结合起来,真正理解什么是软件,理解软件工程如何实施,而不仅仅停留在代码和书本层面。
已经进入IT行业,具有一定编程经验和项目经验,正努力向设计师、系统分析员转变的技术人员们。在编程人员向设计师成长的过程中,本书中的许多思想方法是极具价值的。相信这些知识会成为您成长的助推器。
已经从事设计工作,期望对软件有更深的了解的读者们。本书中包含大量针对现实问题的分析,提出了解决问题的办法,并且进行了总结。相信这些内容将会对您进一步提高分析设计水平有直接的帮助。
对那些实际项目经验不太多的读者来说,本书中的一些内容或许会让人觉得“没有意义”或“不可理解”这是正常的。因为分析和设计是在编程基础上的抽象,而软件方法则是大量编程经验的归纳和总结。正如歌中唱的那样,不经历风雨怎么见彩虹,没有经历过软件项目的困难和折磨,或许就不会产生学习分析设计技术和软件方法的动机;没有在编程过程当中发现问题,就难以理解为什么要进行分析和设计,难以理解为什么采用这样而不是那样的软件方法。尽管如此,作者仍然鼓励这些初学者阅读本书,本书中的经验和思想均来自于作者的实际工作经验,也许暂时不能理解,但是当有一天遇到问题时,读者或许很快能够想起本书中曾经讨论过的问题。这些知识能够帮助初学者尽快成长。
在本书中,大量讲述和讨论面向对象的分析方法、设计方法,并且涉及到整个软件生命周期的各个方面。尽管在基础篇中会讲述关于UML的基础知识,但并不局限于介绍UML本身,在讲述UML基础概念的同时,作者也加入了很多实践经验,希望读者能够从中获益。
在阅读准备篇时,对于经验不够的读者可以大致浏览以获得面向对象方法的基本理解,在后续的章节中回头温习这些方法,逐步加深理解直至真正掌握面向对象的分析和设计方法。
在阅读基础篇时,读者应当将核心元素、核心视图、核心模型这三个章节中的内容贯穿起来理解。简单地说,核心元素描述基本事物;核心视图表达这些事物构成的某种有意义的观点;核心模型则使用核心视图来描述需求、系统、设计等等。
本书是讲述UML的。同样,本书也不是一本纯粹教授UML语法的书籍,而是通过UML这个表象来深入探讨面向对象的分析方法;同时将结合软件工程,传达基于对象的思考方法、分析模式和推导过程以及它们在软件工程的各个阶段如何发挥作用。本书冠以Thinking in UML这一名称正是为了切合这个主题。作者不敢奢望本书会成为《Thinking in Java》一样的经典书籍,但是作者在本书中倾尽了自己在面向对象分析和设计领域中的实践和经验积累。至少对那些尚未能够深入此领域,感觉面向对象仍然似是而非的朋友们,本书中将要传达的那些思路将会是一条线索,至少能够帮助你找到通往面向对象分析的大门。
本书在编写过程中,以大量实际项目中会遇到的实例引出问题,讲述作者对这一问题的分析思路和解决办法。再进一步升华,通过对实例的评点,分析思路的归纳和扩展,上升到面向对象方法理论。逐步引导读者由点到面,由表及里,最后由对工具的使用上升到思想的高度,从而能够自如地跳出工具使用的局限,真正从方法和思想的高度来看待和解决现实的问题。本书中的很多内容和思想将是你在其他书籍中看不到的。
本书分为四部分,由浅入深,从基础到高级,每个章节都有具体的实例进行说明,同时作者将耗费更多的篇幅来评点和阐述这些实例。在某些章节最后还会就一些关键概念和不容易理解的地方提出问题,让读者自行思考。
第一部分为准备篇,需要了解。在这一部分中,作者将从面向对象的困难和需要入手,讲述面向对象分析的一些基本概念,由此提出为什么需要UML这一话题。另一方面,也讲述了接下来学习建模需要了解的一些基本知识。
第二部分为基础篇,在学习中思考。在这一部分中,作者将从实用的角度对UML的基础概念重新组织和归纳整理,同时进行一些扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。这些内容将覆盖绝大部分实际工作的需要。通过这一部分的学习,读者将从另一个角度了解UML,知道UML能够做什么。
第三部分为进阶篇,在实践中思考。在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的代码。并且这个过程将是可验证的和可追溯的。读者在阅读本部分的时候,应关注分析过程和推导过程,思考从需求到实现是如何保证可验证性和可追溯性的。通过这一部分的学习,读者将能够学会如何使用UML来从头到尾地实施一个项目。
第四部分为总结篇,在提炼中思考。在这一部分中,每个章节均会针对一个在现实中经常遇到并且较难掌握的问题进行深入的探讨。这些探讨将有助于提升面向对象的思考能力,升华在前两部分学习到的知识。
本书中用到的UML图使用Rose绘制,完整的工程文件收录在本书附带的光盘中。
由于作者水平有限,很多内容是自己的经验总结,出现错误在所难免,欢迎广大读者批评指正。读者在阅读本书的过程中有任何不清楚的问题和批评建议,可以到作者的博客http://blog.csdn.net/coffeewoo或http://coffeewoo.itpub.net留言,或者发邮件到coffeewoo@gmail.com,作者将尽力给您答疑解惑,您的批评建议也将鞭策作者做得更好。 ..
如何阅读本书
本书并不是一本纯粹的入门书籍。尽管在准备篇和基础篇当中也会大量讲解面向对象和UML的基础知识,不过作者仍然假设读者具备基础的面向对象知识,掌握至少一门面向对象的语言,最好参与过一个完整的软件项目。虽然这些上述的假设并不妨碍读者学习本书中的知识,但是如果具有这些经验,对书中提到的一些解决问题的思路会有更深刻的体会,也更有助于理解书中的一些内容。
作者预期的读者大约有如下几类:
正在学习编程、软件工程等知识,准备将来从事IT行业的读者。这类读者最缺乏的知识是对实际项目了解,难以体会一个完整的项目与编写几千行代码之间的差别,毕竟,曾经在书本上所学的知识与实践需要是有距离的。本书展示了一个完整的软件生命周期,它将有助于读者将课本中学到的知识与真正的项目开发实践结合起来,真正理解什么是软件,理解软件工程如何实施,而不仅仅停留在代码和书本层面。
已经进入IT行业,具有一定编程经验和项目经验,正努力向设计师、系统分析员转变的技术人员们。在编程人员向设计师成长的过程中,本书中的许多思想方法是极具价值的。相信这些知识会成为您成长的助推器。
已经从事设计工作,期望对软件有更深的了解的读者们。本书中包含大量针对现实问题的分析,提出了解决问题的办法,并且进行了总结。相信这些内容将会对您进一步提高分析设计水平有直接的帮助。
对那些实际项目经验不太多的读者来说,本书中的一些内容或许会让人觉得“没有意义”或“不可理解”这是正常的。因为分析和设计是在编程基础上的抽象,而软件方法则是大量编程经验的归纳和总结。正如歌中唱的那样,不经历风雨怎么见彩虹,没有经历过软件项目的困难和折磨,或许就不会产生学习分析设计技术和软件方法的动机;没有在编程过程当中发现问题,就难以理解为什么要进行分析和设计,难以理解为什么采用这样而不是那样的软件方法。尽管如此,作者仍然鼓励这些初学者阅读本书,本书中的经验和思想均来自于作者的实际工作经验,也许暂时不能理解,但是当有一天遇到问题时,读者或许很快能够想起本书中曾经讨论过的问题。这些知识能够帮助初学者尽快成长。
在本书中,大量讲述和讨论面向对象的分析方法、设计方法,并且涉及到整个软件生命周期的各个方面。尽管在基础篇中会讲述关于UML的基础知识,但并不局限于介绍UML本身,在讲述UML基础概念的同时,作者也加入了很多实践经验,希望读者能够从中获益。
在阅读准备篇时,对于经验不够的读者可以大致浏览以获得面向对象方法的基本理解,在后续的章节中回头温习这些方法,逐步加深理解直至真正掌握面向对象的分析和设计方法。
在阅读基础篇时,读者应当将核心元素、核心视图、核心模型这三个章节中的内容贯穿起来理解。简单地说,核心元素描述基本事物;核心视图表达这些事物构成的某种有意义的观点;核心模型则使用核心视图来描述需求、系统、设计等等。
序言回到顶部↑
大象希形
■可遇而不可求.
中国象棋,只有32棵棋子,规则简单,但水平高低之间,不在于是否掌握了马走日象走田。正如UML,简单说只有元素、视图与模型,但水平高低之间,绝不在于谁能在视图之上画出各种元素堆积的模型,而是在于谁能够借助UML提供的这些工具,灵活自如地为复杂项目的开发提供一个成熟的、统一的、系统的、广泛适用的系统分析设计与建模方法,即软件的统一过程。
说到统一过程,不能不提一下RUP,正是由于RUP与UML师出同门,造就了RUP在软件统一过程中的霸主地位。不过一提到RUP这个词,文档、模型、软件层次、迭代、构件、架构、测试….,可以想象大家的感受。RUP的官方文档晦涩而枯燥;而相关的图书,一般还不如官方的文档好看。头晕脑涨事小,明明知道RUP背后隐藏着开启软件高级人才之门的钥匙,却也无可奈何。而于菜鸟同志们来说,遍地的开发框架,层出不穷的设计模式,深不可测的系统分析与建模….,从何学起?如何学起?
这就是一本解决这些问题的书。
对于我本人,坦率地说,这样的书不是策划来的,全凭幸运之神的眷顾。而于广大读者,我可以自信地说,这本书的价值是您难以想像的。
这是一部可遇而不可求的作品。
■天上人间..
有句俗话叫吃水不忘挖井人,说起UML,不能忘记Ivar, James, Grady这三个UML的创始人———三位方法学大师,在软件领域,他们是教父级人物。但是并非所有读者都认可这个观点,原因是他们饱受UML与RUP之晦涩复杂之苦,并且始终也未得其门而入。不能被大众所掌握,再巧妙再高深也只能形同鸡肋。没有从中得到学习的欢愉和成长的快乐,又何必去感激那三个高高在上的人呢?其实我也是这样想的。
我也许是这本书的第一个读者,读完这本书的时候,除了感动还是感动,至于原因,大家自己可以去体验一下,我只是保证这是真实的,如果还是不相信,那推荐您去一下作者的博客,地址是:http://coffeewoo.itpub.net/。我个人认为,三位大师把UML及RUP高高地架在九天之上,而作者却将通过这部作品把UML及RUP普及给渴望相关知识的广大读者。
有一点必须声明,作者本人非常惶恐于拿他与Ivar, James, Grady三位大师相提并论。我理解他的心情,也并没有任何对三位大师的不恭之意,我只是想表达:那三个人在天上,谭老师在人间。
■大象
老子说,大象希形,大音希声。我的理解大概是,象至极大,形之其次;音至极美,声之其次;器至极巧,工之其次。能把UML讲得如蛋清般清沏,已属罕见,在读完这书之后,又突然发现已然把朝夕膜拜的RUP之精髓收于囊中,摸清了开发框架、软件架构、设计模式、系统分析建模与设计的来龙去脉,使其再也不能如梗在喉,真的难以形容这是一种多么美妙的感觉。之余,不得不叹服作者功力之厚、思想之深、语言之美、构思之巧,一切莫不象至极大,故此书命名为《大象》。...
周春元
■可遇而不可求.
中国象棋,只有32棵棋子,规则简单,但水平高低之间,不在于是否掌握了马走日象走田。正如UML,简单说只有元素、视图与模型,但水平高低之间,绝不在于谁能在视图之上画出各种元素堆积的模型,而是在于谁能够借助UML提供的这些工具,灵活自如地为复杂项目的开发提供一个成熟的、统一的、系统的、广泛适用的系统分析设计与建模方法,即软件的统一过程。
说到统一过程,不能不提一下RUP,正是由于RUP与UML师出同门,造就了RUP在软件统一过程中的霸主地位。不过一提到RUP这个词,文档、模型、软件层次、迭代、构件、架构、测试….,可以想象大家的感受。RUP的官方文档晦涩而枯燥;而相关的图书,一般还不如官方的文档好看。头晕脑涨事小,明明知道RUP背后隐藏着开启软件高级人才之门的钥匙,却也无可奈何。而于菜鸟同志们来说,遍地的开发框架,层出不穷的设计模式,深不可测的系统分析与建模….,从何学起?如何学起?
这就是一本解决这些问题的书。
对于我本人,坦率地说,这样的书不是策划来的,全凭幸运之神的眷顾。而于广大读者,我可以自信地说,这本书的价值是您难以想像的。
这是一部可遇而不可求的作品。
■天上人间..
有句俗话叫吃水不忘挖井人,说起UML,不能忘记Ivar, James, Grady这三个UML的创始人———三位方法学大师,在软件领域,他们是教父级人物。但是并非所有读者都认可这个观点,原因是他们饱受UML与RUP之晦涩复杂之苦,并且始终也未得其门而入。不能被大众所掌握,再巧妙再高深也只能形同鸡肋。没有从中得到学习的欢愉和成长的快乐,又何必去感激那三个高高在上的人呢?其实我也是这样想的。
我也许是这本书的第一个读者,读完这本书的时候,除了感动还是感动,至于原因,大家自己可以去体验一下,我只是保证这是真实的,如果还是不相信,那推荐您去一下作者的博客,地址是:http://coffeewoo.itpub.net/。我个人认为,三位大师把UML及RUP高高地架在九天之上,而作者却将通过这部作品把UML及RUP普及给渴望相关知识的广大读者。
有一点必须声明,作者本人非常惶恐于拿他与Ivar, James, Grady三位大师相提并论。我理解他的心情,也并没有任何对三位大师的不恭之意,我只是想表达:那三个人在天上,谭老师在人间。
■大象
老子说,大象希形,大音希声。我的理解大概是,象至极大,形之其次;音至极美,声之其次;器至极巧,工之其次。能把UML讲得如蛋清般清沏,已属罕见,在读完这书之后,又突然发现已然把朝夕膜拜的RUP之精髓收于囊中,摸清了开发框架、软件架构、设计模式、系统分析建模与设计的来龙去脉,使其再也不能如梗在喉,真的难以形容这是一种多么美妙的感觉。之余,不得不叹服作者功力之厚、思想之深、语言之美、构思之巧,一切莫不象至极大,故此书命名为《大象》。...
周春元
书摘回到顶部↑
第一部分 准备篇——需要了解
第1章 为什么需要UML
1 为什么需要UML
过程还是对象?这是个问题。谈到UML,第一个绕不开的话题就是面向对象,就让我们先从基本的方法开始,逐步揭开面向对象的面纱吧。
面向对象如今在软件行业是如此著名的一个术语,以至于人们以为面向对象是现代科学发展到一定程度才出现的研究成果。在很多人看来,面向过程和面向对象都是一种软件技术。例如把面向过程归纳为结构化程序设计、DFD图、ER模型、UC矩阵等,而面向对象则被归纳为继承、封装、多态、复用等具体的技术。事实上,上述的所有技术都只是人们在采用不同的方法来认识和描述这个世界时所采用的工具,它们都只是表征而不是本征。让我们先来看看公认的面向对象大师,也是UML创始人之一的Grady Booch在2004年IBM Developer Works Live!大会的访谈中讲过的一段流传甚广的话:
我对面向对象编程的目标从来就不是复用。相反,对我来说,对象提供了一种处理复杂性问题的方式。这个问题可以追溯到亚里士多德:您把这夺世界视为过程还是对象?在面向对象兴起运动之前,编程以过程为中心,例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点。有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统——我认为,这才是面向对象编程运动的真正胜利。
不知读者看完这段话有何感想?您心目中的面向对象是这样的吗?正如Booch讲到的一样,从本质上说面向过程和面向对象是一个古已有之的认识论的问题。之所以面向对象方法会兴起,是因为这种认识论能够帮助我们构造更为复杂的系统来解释越来越复杂的现实世界。认识到这一点,我们应该知道比掌握具体的技术更重要的是掌握认识论所采用的方法和分析过程。只有掌握了方法才能自如地使用工具。
作者本人认同这个世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同的驱动力和规则下体现出不同的运动过程,然后这些过程便展现出了我们这个生动的世界。在面向过程的眼中,世界的一切都不是孤立的,它们相互紧密联系在一起,缺一不可,相互影响,互相作用,并形成一个个具有严格因果律的小系统;而更多的小系统组成了更大的系统,所有小系统之问的联系也是紧密和不可分割的。
……
第1章 为什么需要UML
1 为什么需要UML
过程还是对象?这是个问题。谈到UML,第一个绕不开的话题就是面向对象,就让我们先从基本的方法开始,逐步揭开面向对象的面纱吧。
面向对象如今在软件行业是如此著名的一个术语,以至于人们以为面向对象是现代科学发展到一定程度才出现的研究成果。在很多人看来,面向过程和面向对象都是一种软件技术。例如把面向过程归纳为结构化程序设计、DFD图、ER模型、UC矩阵等,而面向对象则被归纳为继承、封装、多态、复用等具体的技术。事实上,上述的所有技术都只是人们在采用不同的方法来认识和描述这个世界时所采用的工具,它们都只是表征而不是本征。让我们先来看看公认的面向对象大师,也是UML创始人之一的Grady Booch在2004年IBM Developer Works Live!大会的访谈中讲过的一段流传甚广的话:
我对面向对象编程的目标从来就不是复用。相反,对我来说,对象提供了一种处理复杂性问题的方式。这个问题可以追溯到亚里士多德:您把这夺世界视为过程还是对象?在面向对象兴起运动之前,编程以过程为中心,例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点。有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统——我认为,这才是面向对象编程运动的真正胜利。
不知读者看完这段话有何感想?您心目中的面向对象是这样的吗?正如Booch讲到的一样,从本质上说面向过程和面向对象是一个古已有之的认识论的问题。之所以面向对象方法会兴起,是因为这种认识论能够帮助我们构造更为复杂的系统来解释越来越复杂的现实世界。认识到这一点,我们应该知道比掌握具体的技术更重要的是掌握认识论所采用的方法和分析过程。只有掌握了方法才能自如地使用工具。
作者本人认同这个世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同的驱动力和规则下体现出不同的运动过程,然后这些过程便展现出了我们这个生动的世界。在面向过程的眼中,世界的一切都不是孤立的,它们相互紧密联系在一起,缺一不可,相互影响,互相作用,并形成一个个具有严格因果律的小系统;而更多的小系统组成了更大的系统,所有小系统之问的联系也是紧密和不可分割的。
……


点击看大图







加载中...