《C++面向对象程序设计》第四版的主要变化包括对统一建模语言(UML)的初步介绍,第13章增加的文件间通信部分,以及第16章介绍的用于改进软件开发的方法。开始介绍UML时,只要符合文章主题就应尽量使用UML图例,所以全书中有很多新的UML图例。文件间通信部分集中了先前分散在全书的很多概念。自本书上一个版本以来,业界关于面向对象分析和设计的方法已有了不少发展,因此本书对与这个主题有关的章节做了修改,从而反映这些最新的进展。从上一个版本以来,C++本身只有很少改变。虽然如此,除了已提及到的修订部分,还做了很多小的变动,以便更清楚地阐明已存在的主题,另外还改正了不少印刷错误,对原文中不准确的地方也做了修正。这本书将讲解如何使用C++程序设计语言来编写程序.然而,它做得比这更多.在过去的几年内,软件开发领域出现了一些重大的革新.本书将根据这些最新的发展来教授C++.现在就来看看它们都是什么吧!程序设计变革在20多年以前,程序员在接到一个项目后可以立即坐下来编代码.然而,随着程序设计项目变得越来越大和越来越复杂,这种方法就不怎么有效了.问题的根源就是复杂性.大型程序是人类所创建过的最复杂的实体.由于它的复杂性,程序很容易出错,软件错误往往代价高昂,有时甚至威胁到生命安全(如空中交通控制系统).为解决软件的复杂性问题,程序设计领域出现了三个主要的变革,它们是:面向对象程序设计(Object-OrientedProgramming,OOP)统一建模语言(UnifiedModelingLanguage,UML)改良的软件开发过程本书将用这三个变革的思想来讲授C++语言.在此,你不仅会学到一门计算机语言,还会学到很多有关软件开发的新方法.面向对象程序设计为什么面向对象程序设计成为大多数软件项目的首选方法?OOP提供了一种全新的强大方法来处理复杂性.相对于将程序看成一系列可执行的步骤,新的方法将程序看成是一组具有特定属性和执行特定操作的对象.在进一步学习该方法之前,它听起来有些晦涩,但它确实能够让程序更清晰.更可靠和更容易维护.本书的一个主要目的就是讲授面向对象程序设计,因此将尽可能早地介绍它,并且尽可能覆盖它的所有主要特性.本书的大多数示例程序都是面向对象的.统一建模语言统一建模语言(UML)是一门由多种图例组成的图形语言.它能够帮助程序分析员弄清程序应该做什么,同时帮助程序员设计和理解程序的工作过程.UML是一种能使程序设计更为简单和有效的强大工具.在第1章中对UML做了一个概述,指出本书中将讨论的UML的具体特性.在有助于阐明所讨论的OOP话题的地方,都介绍了相关的UML特性,这种方法使得在学习UML的同时也有助于学习C++.语言和开发平台在面向对象程序设计语言中,C++是到目前为止使用最为广泛的语言.最近才加入OO语言一族的Java由于缺少某些特性,如指针.模板和多重继承等,其功能没有C++多,也不如C++强大(如果你想学习Java,C++的学习将是一个起点.因为Java语法和C++很相似).最近还出现了其他几种OO语言,比如C#,但它们还没有像C++一样被广泛接受.直到最近,C++标准还处在不断变革中,这意味着每一个编译器厂商在处理某些细节时都会有所不同.然而,在1997年11月,ANSI/ISOC++标准委员会批准了最后一个C++草案,这就是众所周知的?曜糃++(ANSI是指美国国家标准化学会,ISO是指国际标准化组织).标准C++增加了许多新的特性,如标准模板库(StandardTemplateLibrary,STL).本书以标准C++为主(少数地方除外,会在学习中标明).最流行的C++开发环境由Microsoft和Borland提供,它们运行在各种MicrosoftWindows平台上.我们尽量保证本书所有的示例程序都可以运行在Borland和Microsoft编译器的当前版本下(参见附录C“MicrosoftVisualC++”和附录D“BorlandC++Builder”中更多关于编译器的内容).关于本书本书使用C++程序设计语言来讲授面向对象程序设计,具体的编译器可以是Microsoft的,也可以是Borland的.此外,本书还介绍了UML和软件开发过??.本书适合于专业程序员.学生和程序爱好者.新概念对于传统语言(如Pascal.Basic和C)程序员来说,OOP涉及的概念是很新的.类.继承和多态性等思想是OOP的核心概念,但是在讨论面向对象语言的细节时,很容易忘掉这些概念.许多书籍都过多地让读者关注语言特性的细节,而忽略掉了这些特性存在的缘由.而本书着眼于全局,将具体的细节和宏观的概念相联系.渐进式方法本书采用了渐进式的学习方法,从最简单的程序设计示例开始,到最后完整的面向对象应用程序.我们尽量以适当的速度介绍新概念,以便于读者有足够的时间在下一次学习之前消化掉这些思想.我们也尽可能地使用图表来阐明新思想.在每一章的结尾都提供了思考题和程序设计练习题以适合于课堂教学.附录G附有思考题和小部分(带星号)练习题的解答,不同难度的练习题可以给学生以不同的挑战