面向对象程序设计
2009-9
清华大学出版社
许薇,方修丰 编著
201
计算机问世以后,在世界范围内,几乎全部的行业和部门管理工作都使用了计算机,因而使管理工作出现了高效率、快节奏,而且节省了很多人力、物力,其经济效益是无法计量的。对于计算机本身来说,这些显著的成就更加取决于对软件的依赖。将现实世界的情况准确地映射到计算机中,以求解决面临的问题是程序设计所追求的目标。长期以来,人们一直研究科学的方法和技术来解决由需求增加导致的需要依靠计算机来完成的各种问题。面向过程的程序设计方法在一个历史时期内适应了这种情况,成为程序设计的首选。随着问题规模的扩大,面向过程的方法和技术已经不能够适应新的发展。面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,在系统构造中尽可能地运用人类的自然思维方式。其开发本质是应用领域内概念的鉴别和组织,而不是它们在一种程序设计语言中的最终表示。面向对象语言是一类以对象作为基本程序结构单位的程序设计语言,用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分,语言中提供了类、继承等成分。面向对象思想的实践依赖于面向对象语言的实现。面向对象方法的发展推动了面向对象语言的不断出现和进步。目前支持面向对象的语言有很多种,其中C++和Java最能够体现面向对象的思想。C++是一种广泛使用的支持面向对象技术的程序设计语言,同时也保留了C语言的灵活性特点。考虑到以C语言为代表的面向过程语言的普及性,本书采用了C++作为描述工具,以求达到尽可能强的适应性。面向对象方法的核心价值体现在类的设计和代码复用理念。运用一种面向对象语言为工具来表述面向对象的思想和方法是撰写本书的目的,因此具体的C++语法规范不是本书的论述重点。根据本书的编排,读者们能够掌握面向对象程序设计的基本方法,并学会利用C++程序设计语言编写具有面向对象特征的程序代码,从中体会出面向对象程序设计的精髓。全书由8个章节和2个附录构成。第1章C++基础知识,简要介绍了C++语言的部分知识,这些知识主要为后面采用C++工具描述面向对象的思想和方法提供了技术支撑; 第2章面向对象程序设计概述,主要介绍面向对象程序设计所涉及的基本概念和基本方法,重点表述了面向对象分析、面向对象设计、面向对象实现及面向对象的测试和软件维护; 第3章类与对象,主要介绍对象和类的产生机制,以及采用C++语言对其实现的方法; 第4章继承和派生,主要讲述了面向对象方法中代码重用问题,并采用C++语言予以实现; 第5章多态性,主要讲述在代码复用的基础上如何使程序的表示形式与程序的表达内容尽可能无关; 第6章模板,模板提供了数据类型的灵活性,并且支持了编译时的语法检查,极大地提高了程序的可重用性; 第7章异常,主要介绍异常的处理思想和C++的异常处理机制; 第8章流类库,流类库是C++语言利用继承组织类层次的典范,通过介绍流类库和它的使用方法来体现面向对象程序设计思想。附录中对采用Visual C++6.0调试程序的方法做了必要的描述。本书中列举了大量实例,大部分的程序均已在 Visual C++6.0下调试通过,由于Visual C++6.0对标准C++规范的改变,使它不能够完成全部例程的调试,所以采用了Cfree4.0调试了部分程序。与其他面向对象程序设计书籍相比较,本书有以下几个特点: 主旨明确,抛开语法细节,直入核心理念。举例精简,力求以简明表述说明内在本质,防止陷入程序细节而妨碍对知识点的理解。环节驱动,章前有导读,章后有总结并辅以思考问答使读者学前有所思学后有收获。脉络清晰,知识章节编排突出循序渐进的原则,使读者能够系统地掌握面向对象技术的基础知识、基本技能。形成严密的逻辑思维能力,进而掌握面向对象程序设计的思想和方法。本书适合于具有结构化程序设计方法知识的读者使用,可作为计算机专业学生面向对象程序设计课程的教材,也可作为从事计算机软件开发人员的参考资料。在本书的编写过程中,我们参考和引用了国内外同行的书籍和文献,在此,向被引用文献的作者以及给予本书帮助的所有人士表示衷心的感谢!尽管作者是多年从事面向对象程序设计教学的一线教师,有着比较丰富的教学经验,由于面向对象技术的快速发展,我们难以对面向对象程序设计的最新成果加以全面表述,更由于作者的学识水平限制,书中尚有不足和错误之处,恳请读者予以批评指正,以便再版时修订。
本书以C++语言为描述工具,描述了面向对象程序设计的主要思想和方法,并对其中的重要概念和机制做了详细论述及C++技术的实现。书中知识编排脉络清晰、主旨明确,用例简洁且针对性强,突出并实现了阅读环节对学习效果的价值。 本书适合于具有结构化程序设计方法知识的读者使用,可作为计算机专业学生面向对象程序设计课程的教材,也可作为从事计算机软件开发人员的参考资料。
第1章 C++基础知识 1.1 面向对象的程序设计语言 1.1.1 C++语言 1.1.2 Java语言 1.1.3 Visual Basic语言 1.2 变量 1.2.1 变量的定义方法 1.2.2 const修饰符 1.2.3 引用类型 1.3 函数 1.3.1 函数原型 1.3.2 内联函数 1.3.3 带默认参数的函数 1.3.4 函数的参数传递 1.3.5 函数重载 1.4 名字空间 1.5 动态内存分配 1.5.1 内存申请 1.5.2 内存释放 1.6 作用域 1.6.1 生存期 1.6.2 全局和局部变量 1.7 多文件结构 本章小结 思考与练习第2章 面向对象程序设计概述 2.1 面向对象程序设计的基本概念 2.1.1 面向对象方法的产生 2.1.2 面向对象方法的方法与结构 2.1.3 类和对象的概念 2.1.4 消息与事件的概念 2.2 面向对象程序设计的特点 2.2.1 抽象性 2.2.2 封装性 2.2.3 继承性 2.2.4 多态性 2.3 面向对象的软件开发 2.3.1 面向对象分析 2.3.2 面向对象设计 2.3.3 面向对象实现 2.3.4 面向对象测试 2.3.5 面向对象软件维护 本章小结 思考与练习第3章 类与对象 3.1 类 3.1.1 类的定义 3.1.2 访问控制 3.1.3 成员变量 3.1.4 成员函数 3.2 构造函数与析构函数 3.2.1 构造函数 3.2.2 析构函数 3.2.3 拷贝构造函数 3.2.4 浅拷贝与深拷贝 3.2.5 构造函数和析构函数的调用过程 3.3 对象 3.3.1 对象的定义 3.3.2 类成员的访问 3.4 子对象 3.4.1 组合模式 3.4.2 子对象和构造函数设计 3.4.3 内部类 3.5 静态成员 3.5.1 定义与引用 3.5.2 静态数据成员 3.5.3 静态成员函数 3.6 友元 3.6.1 友元的作用 3.6.2 友元函数 3.6.3 友元类 3.6.4 友元成员函数 3.7 设计举例 本章小结 思考与练习第4章 继承与派生第5章 多态性第6章 模板第7章 异常处理第8章 流类库附录A 基本ASCII字符集附录B Visual C++下的程序调试参考文献
插图:2.3.1 面向对象分析面向对象分析是指在深入、全面理解问题本质需求的基础上,确定类与对象、属性,分析对象模式及类对象的关联关系,确定行为等要素。为全面正确理解问题的实质和要素,在面向对象程序软件开发的分析阶段,系统分析员应与客户一起工作。应从目标问题的分析和描述人手,建立一个符合系统内在逻辑、能客观反映系统重要特性的准确数学模型。在深入理解客户需求分析的基础上,面向对象分析要做的主要工作包括确定类、确定类的属性和确定类的方法。另外,还要确定类之间的联系方式,这称为确定对象模式。实际上,在一个较大的软件系统分析中,确定类和确定对象模式是结合起来完成的。1.确定类类是对象模型的基础,寻找并整理出对象模型中的全部类,是首先要做的工作。面向对象程序设计的重要步骤之一就是将如何将现实世界的对象关系映射到计算机的虚拟世界中去,对于现实世界来说,对象可分为以下几种情况:(1)需求分析包括的可感知的实体和抽象的概念。可感知的实体如计算机、防盗门、出租车、茶杯、台灯等,抽象的概念如学校校规、交通法规等。(2)需求分析包括的人或组织的角色,如司机、教师、学生、市长、工人、医生、护士、病人等。(3)需求分析所涉及事件,如学生在食堂买饭、顾客在商场购物、汽车发生交通事故、飞机发生空难事故等。事件是指一个状态的改变,或者一个活动的发生。事件可按需求分析得出的重要程度分为一般事件和重要事件。一般事件可在相关类中增加属性并增加相应的方法。重要事件可设计为类,例如,飞机发生空难事故,这种需要长期保存资料的事件就要设计成单独的类。
《面向对象程序设计(C++描述)》是由清华大学出版社出版。教学目标明确,注重理论与实践的结合教学方法灵活,培养学生自主学习的能力教学内容先进,反映了计算机学科的最新发展教学模式完善,提供配套的教学资源解决方案