图书前言

自从第一台计算机诞生以来,程序设计方法与程序设计语言不断发展。面向对象的程序设计使计算机解决问题的方式更符合人类的思维方式,更能直接地描述客观世界,通过增加代码的可重用性、可扩充性和程序自动生成功能来提高编程效率,并且大大减少软件维护的开销,从而被越来越多的软件设计人员所接受。“面向对象”不再是软件开发中的一个时髦名词,而是对软件开发人员的基本要求。面向对象程序设计已经成为程序设计领域的主流技术。

目前,在教学实践中还很难找到一本合适的面向对象程序设计的入门教材能够兼顾到理论应用和编程实践。我们编写本书的目的是为了给面向对象程序设计初学者提供一本清晰的入门教材,该教材以面向对象程序设计(ObjectOriented Programming,OOP)方法为核心,并选用C++语言作为工具。本书围绕两条主线进行编写: 一条主线以通俗易懂的语言围绕类与对象,介绍面向对象程序构造的基本思想。另一主线设计了丰富的实用程序,通过实践引导学生快速掌握使用C++语言开发面向对象程序的方法和技巧。

本书浓缩了作者多年来软件开发和教学实践的经验和体会,通过多次讲授面向对象程序设计,作者能够深刻理解面向对象程序设计编程的基本学习要求,与其他面向对象程序设计教材相比,本书有以下特色: 

(1) 以循序渐进、深入浅出的方式引导读者学习面向对象程序设计的基本思想。

本书在章节的安排上是由易到难。在讲解每章的过程中,尽量用一个实例,从满足基本要求开始,一步一步融入新的思想和方法。每章最后设计了一个应用实例,围绕一个专用系统来开发,重点对本章内容进行综合运用,同时与前面章节相呼应。

为了突出教学重点,本书实例中没有用到C++语言的复杂结构,这样既使程序具有可读性,又避免了喧宾夺主。

(2) 以面向对象程序设计方法为核心,以C++语言为工具。

面向对象程序设计作为一种程序设计方法,应该是独立于程序设计语言的。本书在讲解面向对象程序设计的每一个新机制时,首先介绍为什么要引入这些机制,然后说明这些机制在C++内部是如何实现的。我们力求使读者不仅学会使用,而且可以理解这些机制。只有这样读者才可能很容易地转向其他程序设计语言。

当然,在面向对象程序设计语言环境中进行程序设计,可以使面向对象思想得到更好的支持。所以,在学习面向对象程序设计的过程中,掌握程序设计语言的特征固然是重要的,但掌握面向对象程序设计思想却是更本质的要求。

(3) 不需要先有扎实的C语言基础。

一是C++语言对C语言最主要的扩充是引入了面向对象的概念及相应的处理机制。本书第2章介绍了C++语言的新特性,且重点介绍了它在后续章节中要用到的部分。二是没有设计复杂的算法,这与本书的教学目标是一致的。

(4) 类是构造面向对象程序的基本单元。

时下流行的一个观点是,学习C++应该先从类学起。从第3章开始,书中的实例程序基本上都是由主函数加上类组成的,类是构造面向对象程序的基本单元。这样有助于初学者采用面向对象思维方式而不是传统结构化的思维方式来解决实际问题,有助于构造良好的程序结构,为日后处理大型程序打好基础。

(5) 每个关键概念都配以完整的C++测试实例。

本书针对所讲述的知识点提供便于理解的实例,避免枯燥无味的讲解,给读者以直观的感受。每章后面提供一个综合实例,如此环环紧扣,帮助读者完成从了解、熟练到深入理解的学习过程。为了确保正确性,每个实例均已在Visual C++6.0环境下调试通过。

(6) 每章后面配有与教学要求一致的练习题。

每章后面的练习题内容全面,形式多样。包括问答题、选择题、判断题、分析程序输出结果题和编程题等。通过这些练习题,读者可以及时地检查和考核对本章内容学习和掌握的情况,教师也可以从中选出一些题作为作业题。

(7) 附录配有与教学要求一致的实验内容。

安排并指导学生上机实习,对学好本课程具有重要意义。对初学者来说,理解面向对象程序设计的基本思想需要一个循序渐进的过程。所以本书提供的实验内容既有验证性的,也有应用性的。每个实验中除了给出实验目的、实验内容外,还要求学生结合实验结果进行分析和讨论。

本书第3~9章由马石安编写,第1、2章由魏文平编写,所有习题、图片及实验内容由魏文平编写和整理,全书由马石安统一修改、整理和定稿。

为方便教师教学和学生学习,本书有配套使用的实验参考程序与习题解答,还制作了课堂教学用的PowerPoint幻灯片。可以在清华大学出版社网站(http://www.tup.com.cn)上下载,同时欢迎与各位同仁探讨面向对象程序设计教学中的相关问题。

在编写过程中,本书参考和引用了大量书籍和文献资料。在此,向被引用文献的作者以及给予本书帮助的所有人士表示衷心的感谢。

由于作者水平有限,加之时间仓促,书中难免存在不足与疏漏之处,敬请读者及同行予以批评指正。

〖〗〖〗前言〖〗面向对象程序设计教程(C++语言描述)〖〗

编者〖〗2007年4月