p;本书主要介绍面向对象的理论及如何用C十十这个语言工具来实现面向对象编程。本书的特点是理论与实践紧密结合,使读者在理解理论的同时,掌握如何实际实现。本书共分为两篇:理论篇和实践篇。理论篇共六章,主要介绍面向对象的理论。实践篇共八章,主要介绍如何用C十十实现面向对象的理论,本篇为各章设计了一个贯穿始终的实例将全书内容联系了起来。另外还简单介绍了Windows应用程序的面向对象实现。本书可作为计算机专业的高年级本科生或与计算机相关专业的研究生的教材,还可以作为已经掌握了C语言的软件设计人员学习面向对象编程的参考书。片断:bsp;“面向对象”是软件程序设计中的一种新思想,由于这种新思想的引入,使我们的程序设计能更加贴近现实,并且花费更小的精力。本章主要介绍“面向对象”思想的由来和面向对象的程序设计方法1.1面向对象思想的由来“对象”一词在现实生活中经常会遇到,它表示现实世界中的某个具体的事物。社会的不断进步和计算机科学的不断发展是相互促进的,一方面计算机科学的发展推动了社会的发展,计算机的广泛应用给整个社会生产力带来了勃勃生机;另一方面社会的发展,又给计算机科学提出了许多新的要求,计算机科学只有不断地进行自身提高和自身完善,才能适应不断进步的社会生产力的需要。随着计算机的普及应用,人们越来越希望能更直接与计算机进行交互,而不需要经过专门学习和长时间训练后才能使用它。这一强烈愿望使软件设计人员的负担越来越重,也为计算机领域自身的发展提出了新的要求。利用传统的程序设计思想无法满足这一要求,人们就开始寻求一种更能反映人类解决问题的自然方法,“面向对象”技术就是在这样的情况下产生的。“面向对象”技术追求的是软件系统对现实世界的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间。它希望用户用最小的气力,最大程度地利用软件系统来解决问题。现实世界中的事物可分为两大部分,即物质和意识,物质表达的是具体的事物;意识描述的是某一个抽象的概念。例如“自行车”和“这辆白色的自行车”,“这辆白色的自行车”是物质,它是具体的客观存在;“自行车”是意识,它是一个抽象的概念,是对客观存在的事物的一种概括。这些现实世界中的事物可直接映射到面向对象系统的解空间,现实世界中的物质可对应于面向对象系统中的“对象”,现实世界中的意识可对应面向对象系统中的抽象概念——类。自行车在面向对象系统中可用自行车类来表达,一辆白色的自行车在面向对象系统中是一个具体的对象,是自行车类的一个实例。1.2面向对象程序设计面向对象程序设计是软件系统设计与实现的新方法,这种新方法是通过增加软件可扩充性和可重用性,来改善并提高程序员的生产能力,并控制维护软件的复杂性和软件维护的开销。到底什么是面向对象程序设计?在我们对它给出解释之前,需要首先讨论一下结构化程序设计。1.什么是结构化程序设计(StructureProgramming)结构化程序设计是60年代诞生的,在70年代到80年代已遍及全球,成为所有软件开发设计领域及每个程序员都采用的程序设计方法,它的产生和发展形成了现代软件工程的基础。结构化程序设计的设计思路是:自顶向下、逐步求精;其程序结构是按功能划分若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的手段,从而有效地将一个较复杂的程序系统的设计任务分成许多易于控制和处理的子任务,这些子任务都是可独立编程的子程序模块。这些子程序中的每一个都有一个清晰的界面,使用起来非常方便。结构化程序设计方法虽然具有很多的优点,但它仍是一种面向数据/过程的设计方法,它把数据和过程分离为相互独立的实体,程序员在编程时必须时刻考虑所要处理的数据的格式。对于不同的数据格式即使要做同样的处理或对相同的数据格式要做不同的处理都需编写不同的程序。因此结构化程序的可重用性不好。另一方面,当数据和过程相互独立时,总存在着用错误的数据调用正确的程序模块或用正确的数据调用了错误的程序模块的可能性。因此,要使数据与程序始终保持相容,已经成为程序员的一个沉重负担。上述这些问题,结构化程序设计方法本身是解决不了的,它需要借助于我们下面要讨论的面向对象程序设计方法给予解决。2.什么是面向对象程序设计(ObjectOrientedProgramming——简称OOP)面向对象程序设计既吸取了结构化程序设计的一切优点,又考虑了现实世界与面向对象解空间的映射关系,它所追求的目标是将现实世界的问题求解尽可能简单化。面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型——类,并且考虑不同对象之间的联系和对象类的重用性。例如我们可以将各种各样的自行车抽象成一个自行车类,它所包含的数据内容有架子尺寸、车轮尺寸、颜色和原材料等,它所具有的操作有转弯、移动和修理等。每一辆具体的自行车就是属于自行车类的一个对象