设为首页 加入收藏

TOP

面向对象的思维过程(1)
2013-10-07 00:40:14 来源: 作者: 【 】 浏览:57
Tags:面向 对象 思维 过程

【51CTO快译】

介绍

本文是关于面向对象思维过程系列文章的第一部分,选择这个主题作为书籍或专栏的标题是一个重大的决定,做出这个选择并不简单,因为已经有很多面向对象主题的好书和文章了,包括面向对象分析、面向对象设计、面向对象编程(www.cppentry.com),设计模式、面向对象的数据库、统一建模语言(UML)、不同的面向对象编程(www.cppentry.com)语言以及其它许多面向对象的主题。

但读完这些书之后,许多人忘记了这些主题都是建立在一个基础之上的:你是如何思考面向对象方法的。不幸的是,许多软件专业人员花费了大量时间在这些书中,但却没有努力真正理解包含在它们之中的思想。

我主张学习面向对象思想时不是靠学习一个特定的开发方法或一套工具来完成的,面向对象做事的方法是一个简化表达的思维方式,本专栏所有文章都是与面向对象思维过程有关的。

从面向对象思维过程中将开发方法和工具分开不是一件容易的事情,许多人都是通过一个开发方法或一个开发工具引入面向对象的思想的,许多C程序员都是通过向C++(www.cppentry.com)移植才接触面向对象的思想的,还有一些软件专业人员是使用UML表达对象模型时才接触到面向对象思想的。

理解学习面向对象思想和使用支持范例的方法和工具之间的重要不同之处是很重要的,在这篇文章中,Craig Larman表述了“UML是什么,不是什么”。

不幸的是,按照软件工程和UML图形表示语言的背景,学习阅读和编写UML标记的技巧看起来就和面向对象分析和面向对象设计差不多,当然,这并不是面向对象,后者比前者重要得多,因此,我建议学习面向对象分析和设计的技巧,它比UML标记或使用一个用例工具重要多了。

虽然学习一门建模语言是很重要的一步,但首先学习面向对象技巧更重要,在没有面向对象思想之前学习UML就和没有一点电气知识就去学习如何阅读一个电气图有点类似。

相同的问题发生在选择编程(www.cppentry.com)语言,正如前面谈到的,许多C程序员是通过移植C++(www.cppentry.com)而接触到面向对象思想的,通常,C++(www.cppentry.com)开发人员只是使用C++(www.cppentry.com)编译器的C程序员。

即使面向对象语言如Java、C# .NET和Visual Basic .NET已经变得非常流行,但这个问题仍然存在,有许多Visual Basic程序员现在必须跳跃到Visual Basic .NET,同样,也有许多C++(www.cppentry.com)程序员可能被迫执行面向对象的实践,被要求转移到Java或C#,除了思考面向对象的方法外他们没有别的选择。

早期的Visual Basic不是面向对象的,C++(www.cppentry.com)也是向后兼容C,正是因为如此,就出现了大量的使用C++(www.cppentry.com)编译器,但同时只使用了C语法的情况,放弃了所有C++(www.cppentry.com)面向对象的特性,更糟糕的是,一个使用了足够多面向对象特性的程序使得程序难以理解,这就是对面向对象思想的滥用。因此,当你在使用面向对象的开发方式时,首先学习面向对象思想的基础显得非常重要,不要受到编程(www.cppentry.com)语言(如C++(www.cppentry.com),C#或Java)或建模语言(如UML)的影响,多花点时间学习面向对象的思维过程。

当我在1980年末上我的第一堂Smalltalk课时,老师说这堂课是一堂全新的面向对象范例的思维方法,它接着说即使我们大多数人都是非常优秀的程序员,但我们中肯定有大约10%到20%的人永远都不会掌握面向对象的思维方式,如果这种情况确实属实,很有可能是那部分人从来都没有花时间研究范例和学习面向对象思想。

本专栏的范围

现在应该非常清楚了,在一头扎进编程(www.cppentry.com)语言和建模语言之前,先成为面向对象思维过程的忠实信徒吧,专栏内容将会包括Java、C#和VB .NET代码示例,同样也会有UML图表,但真正理解面向对象思想时,你不需要知道Java、C#或UML。我已经说过,首先应学习思想,为什么要那么多代码或UML图表呢?首先,它们都是描述面向对象思想的好工具,第二,它们对面向对象过程都非常重要,关键是不要集中在代码或UML,而是使用它们来理解这个思想。

并不是这个专栏就不教代码语法或UML了,我希望通过这个专栏让你对其它面向对象主题引起兴趣,如面向对象分析、面向对象设计和面向对象编程(www.cppentry.com)。

面向对象思想介绍

其实面向对象软件开发早在1960年就开始了,这多少让人感觉意外,虽然对象在目前的软件行业变得更加流行了,但大量的软件厂家还在拿面向对象表演,其实在软件行业它已经没什么秘密可言了,目前有大量传统的非面向对象的系统看起来工作得非常好,为什么要冒险替修改它们呢?大多数情况下,你不应该修改它们,至少不要简化修改的理由,使用非面向对象的代码编写的系统天生并没有什么错。

过去10年面向对象开发呈现逐步增长的趋势,Web的出现打开了一个全新的舞台,开发Web程序可以完全不受传统思维的影响,即使受到传统思想的束缚,也趋于将传统系统封装成对象。

内容导航
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Windows核心编程 推荐序 下一篇为 Nokia N810 开发感知 GPS 的应..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: