首页 > 其他 > 详细

I 引言

时间:2014-03-27 05:46:24      阅读:491      评论:0      收藏:0      [点我收藏+]
没有一种技术能解决所有问题
没有一种编程语言总能产生正确结果
没有一个程序员每个项目都白手起家
 
    面向对象是当下“无所不能”的技术——即使我们已经使用了十几年了。其核心技术也就是我们过去二十多年所学到的那些良好的编程准则。因为C++(Eiffel, Oberon-2, Smalltalk ...)是一种面向对象语言,所以我们认为这是一种新语言——尽管你可以不用那些面向对象的特性,结果就是你把它当成纯C使用。只有面向对象允许在不同的项目中复用代码——尽管子程序这个概念随着计算机与生俱来,尽管很多程序员都有自己的工具集和类库。
 
    本书并不是来赞美面向对象或者谴责传统方法。我们仅是使用标准C来发掘面向对象如何实现、使用到的技术、为何可以用它来解决更复杂的问题、处理一般性的问题以及如何在编程中及早的发现问题。在这个过程中我们会遇到所有的新兴术语——类、继承、实例、连接、方法、对象、多态——我们将揭开这些神秘的领域并看看如何将这些东西转换为我们以前所熟知的内容。
 
    我很开心的发现标准C是一种全尺寸的面向对象语言。如果你想分享这种乐趣你必须非常熟悉结构体、指针、原型和函数指针。你将会发现所有的新术语贯都会穿本书,根据Orwell和Webster的定义:语言就是减少我们所思考的工具,我试着为你演示这些新技术仅仅是把所有的良好编程准则串联在一起。最后你会编程一个熟练的标准C程序员。
 
    前六章我们使用标准C来奠定面向对象技术的基础。我们从抽象数据类型的信息隐藏开始,通过在结构体的尾部添加数据来实现动态链接的通用函数和代码继承。最后我们将所有的东西结合起来形成类层次,用以开发更容易维护的代码。
 
    编程需要规律。良好的编程使用许多规律,数量众多的准则、标准、以及防御方式。程序员也使用工具,好的程序员使用工具来分解日常任务。使用标准C实现面向对象会用到大量的不可变的代码(注:不懂)——名字变但是结构不变。接下来的第七章我们会实现一个小型的预处理器来产生这些模板文件。它会看起来像一个面向对象的方言,但是我们应该将其视为一个更好的技术,这种技术替代我们完成枯燥的工作,让我们更关注使用创造性的新技术来解决难题。ooc是比较随意的,我们创建、理解、修改并使用标准C实现。
 
    接下来的章节我们将细化和优化我们的技术。第八章我们将添加动态类型检查,可以让我们尽早的发现错误。第九章我们将实现自动初始化,用以消除另一类的Bug。第十章我们将介绍委托,并演示类和回调如何简洁的协作,例如繁琐的主程序。接下来的几章我们将关注由类方法带来的内存泄露,一种明了的策略用于数据存储和加载以及使用嵌套异常解决错误恢复。
 

    最后一章我们将跳出标准C的范围实现一个只能鼠标操作的计算器,先是Curses后是X Window版本。这个版本将会巧妙的演示我们如何使用对象和类来优雅的实现一个系统,即使我们得使用各种各样的外来类库。

 

    每个章节都有一个总结,如果你不仔细的通读也能了解本章的大概内容以及未来的重点。每章都有一些练习,然而没有正式的说明,因为我相信每个人都应该自己动手。因为我们重头开始构建这些技术,所以我尽量避免大量其他的类库,即使这是东西会对我们的例子带来很大的好处。如果你想掌握面向对象技术,那么掌握这些技术并在代码设计中使用这些技术非常的重要,并在你的开发过程中尽量少的依赖别人的库。

 

    本书中非常重要的配书代码包含在软盘中,软盘中包含一个DOS文件系统,这个文件包含一个脚本命令用于创建所有章节的源代码。在Make之前请阅读ReadMe文件。使用diff命令可以很直观的看到每章中ooc代码相对于根类的变化。

   

    本书中描述的这些技术来自于我对C++深刻的认识,即当我想用面向对象实现一个交互式的语言时,我很难用C++锻造出一个便于移植的实现。我转而认识到标准C可以完美的满足我的需求。我将这些技术在课堂或者研讨会上演示给很多人看过,别人也用这些技术去解决问题。如果Brain Kernighan和我的出版商Hans-Joachim Niclas、John Wait没有鼓励我将这些注释出版,我可能不会任我我的这些脚注是一种时尚。也很感谢那些帮助过和经历过本书变革的人。最后我想感谢我的家庭——面向对象不会替代一片面包。

Hollage, October 1993
Axel-Tobias Schreiner

译者:su47yuwenshu 2014.3.27

转载请注明出处

I 引言,布布扣,bubuko.com

I 引言

原文:http://www.cnblogs.com/su47yuwenshu/p/3627385.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!