第2版前言
面向对象编程技术降低了软件开发的复杂度,提高了软件开发的效率,能够开发出可靠性高、可重用和易维护的软件,是当今及未来很长一段时间内软件开发的主流技术。了解和掌握面向对象编程的基本原理和方法是进一步学习计算机应用和程序设计的基础。
C++语言是在C语言基础上扩充了面向对象机制而逐步发展起来的一种程序设计语言,程序结构灵活,代码简洁清晰,可移植性强,支持数据抽象、面向过程和面向对象程序设计。C++语言因其稳定性、高效性、兼容性和扩展性而被广泛应用于不同的领域和系统中,常被用来设计操作系统(如UNIX、Windows、Apple Macintosh)、设备驱动程序或者其他需要在实时约束下直接操作硬件的软件。图形学和用户界面设计是使用C++语言最深入的领域,银行、贸易、保险业、远程通信以及军事等诸多应用领域也常用C++语言设计其应用程序的核心代码,以求软件的最佳性能和开发效率。
无论从编程思想、代码效率、程序的稳定性和可靠性,还是从语言本身的实用性来讲,C++语言都是面向对象程序设计语言的典范。学好C++语言,不仅能够用于实际的程序设计,而且有助于理解面向对象程序设计技术的精髓,再学习诸如Java、C#之类的面向对象程序设计语言也就简单了。
十多年的C++语言教学经验和更长的编程实践给本书作者的真切体会是“读教科书明其理,看技术书知其用”。把教科书的原理剖析和技术书的案例分析相结合有利于深刻地理解和掌握C++语言程序设计的基本原理和技术,有利于将学到的技术用于实际的软件开发中。
本书即基于这样的认知体会而编写,兼具C++技术书籍和教材的特点,既比较深刻地介绍了C++面向对象的程序技术和原理,又清晰地介绍了Windows平台下的C++程序实现方法,且通过程序实例将两者较好地结合在一起。书中基于DOS平台精心设计了一个贯穿全书大部分章节的规模较大的专业课程类管理程序comFinl,并不断地利用面向对象的C++程序技术扩充该程序的功能,使之成为一个比较完整的综合程序,并最终将它从DOS平台移植到Windows系统中,成为一个Windows应用程序。读者可借此掌握C++应用程序的设计方法,以及将DOS程序中的自定义类移植到Windows程序中的方法和过程。
本书荣获中国电子教育学会于2012年评选的“全国电子信息类优秀教材”(二等奖)。
本书是《C++面向对象程序设计》的第2版。其第1版自2007年出版以来,受到广大师生和软件开发人员的好评,重印多次,得到了多所高校的认可,许多学生发来求解书中疑问或习题参考答案的邮件,一些软件开发人员与作者邮件探索了将C++类移植到Windows程序中的方法,还有不少读者指出了书中的错误和缺限。这些是本书得以进步和持续发展的源泉。
这次修订充分采纳了广大教师和读者的意见,保留了本书第1版的整体结构,但精简了部分章节的内容,删除了一些深奥难懂且不太实用的技术原理分析,并对一些程序案例进行了重新设计,使本书更加精炼和实用。
全书共分为12章。第1~2章介绍C++语言的基础知识。第1章介绍面向对象程序设计的主要特征、C++程序的结构、数据输入/输出以及Visual C++ 6.0编程环境;第2章介绍C++语言对C语言非面向对象方面的扩充,主要包括指针、常量、引用、类型转换、函数重载、内联函数、作用域、命名空间及C++文件操作。
第3~9章介绍C++面向对象程序设计的特征、思想和方法,包括类与对象、继承与派生、虚函数、运算符重载、模板与STL程序设计、异常、文件与I/O流等内容。
第10~11章介绍Visual C++ Windows程序设计的原理和方法。第10章介绍C++ Windows程序设计的基础知识,包括Windows程序设计的常用数据结构、程序运行原理、消息驱动、API程序设计等内容;第11章介绍MFC应用程序框架的设计原理和方法,包括事件函数、对话框、控件、GDI、菜单和工具栏设计等内容。
第12章介绍将第4~9章逐步完善的基于DOS平台的C++课程管理程序comFinal移植到Windows程序中的方法。在MFC向导创建的应用程序框架中逐步引入在DOS平台下完成的多个自定义类,并通过事件函数、对话框、工具栏、菜单调用这些自定义类的对象,示范了在Windows程序中操作自定义类、开发Windows应用软件的方法。
本书内容全面、析理透彻、注重实用。书中精心设计了易于理解和富有代表性的释意图和案例程序,清晰而深入浅出地展示了C++面向对象程序设计的原理和各种技术,并对面向对象编程过程中容易发生的误解和错误进行了重点分析,颇具启发性,有利于程序设计能力的培养与提高。书中所有案例程序均在Microsoft Visual C++ 6.0环境中测试通过。
本书由杜茂康、李昌兵、曹慧英、王永和张仿编写。李昌兵编写了第1、2、3、4章,曹慧英编写了第5、6、7章,张仿编写了第8、9章,王永编写了第10、11章,杜茂康编写了第12章,全书由杜茂康审校和统稿。
本书在编写过程中得到了不少专家、学者、老师和同事的指导、支持和帮助。罗龙艳、谢青、刘友军、武建军、罗文龙等老师参与了本书编写大纲的讨论与确定,2004级信息管理与信息系统专业的两位忠实的学生李明闯和王晓润仔细地阅读了本书第1版初稿中的每一个字符、每一行代码,校正了初稿中的许多错误,并提出了许多有用的建议。刘曜教授对本书的编著方式和章节安排提出了有益的建议,刘达明、刘跃两位教学专家结合教学规律从章节内容的详略难易设置等方面给予本书富有建设性的指导,在此谨向他们表示诚挚的感谢!
在本书的编写过程中阅读参考了国内外大量的C++语言的相关书籍,这些书籍已被列在书后的参考文献中,在此谨向这些书籍的作者表示衷心感谢!
面向对象程序设计是一项不断发展变化的程序技术,C++语言更是博大精深,鉴于作者才疏学浅,水平有限,加之经验不足,书中一定存在不少错误和不当之处,恳请专家、同行和读者批评指正。
为了便于读者学习和教师教学,本书配有以下辅助资源:全部例题的程序代码、部分习题的程序代码、配套的电子课件。有需要者可从华信教育资源网(http://www.hxedu.com.cn)上进行下载。
读者反馈:unicode@phei.com.cn。
作者