C++面向对象程序设计
上QQ阅读APP看书,第一时间看更新

前言

C++作为一门优秀的面向对象编程语言,已经成为近十年来最流行、应用范围最广的编程语言之一,被广泛应用于众多工程技术领域。C++在继承C语言效率高的优点的同时,还实现了面向对象技术的抽象、封装、继承和多态等核心特性。由于这些特性,使得面向对象程序相比传统的结构化程序而言,具有更高的可复用性、可扩展性和可维护性。这使得C++成为开发大型复杂软件的首选编程语言。同时,C++面向对象程序设计也成为计算机科学与技术、软件工程等相关专业的基础课程之一。

C++既支持面向过程的程序设计,也支持面向对象的程序设计。因此,大多数C++书籍中通常既包含面向过程的内容,也包含面向对象的内容,书中有大量篇幅介绍C语言中的知识。考虑到计算机科学与技术、软件工程等相关专业的学生,在学习C++面向对象程序设计课程之前,大多已学过C语言程序设计课程。因此,本书在内容组织安排上选择了以面向对象为主的方式,书中包含的C语言面向过程设计部分的内容较少。

本书编者长期从事计算机科学与技术专业、软件工程专业的C++程序设计教学工作,在教学中遇到了一些问题,例如:C++语法规则繁多,学生很难完全理解,容易导致畏难情绪;学生学习语法知识后不了解其应用方法,在程序开发时无法灵活应用所学知识等。同时,本书编者也积累了一些教学经验,因此萌生了编写一本C++教材的想法。

基于作者在C++程序设计教学实践中遇到的问题,本书注重程序实例的合理性,注重引导读者理解并学会应用面向对象程序设计的思想和方法,力求从应用出发培养学生的学习兴趣。例如,在讲解基本语法规则之前,先通过浅显的例子帮助读者理解相应知识点,在此基础上再力求使读者达到运用相应知识点的目标;对教学中的重点和难点内容,精心设计实例进行细致分析。

本书的主要特色如下:

1.注重基础

本书较全面地介绍了C++的基本语法和相关知识,并将面向对象设计的思想融合于问题的解决中。本书面向大学计算机相关专业的低年级学生,建议读者最好具有一定的C语言程序设计基础。

2.深入浅出

本书力求用简洁浅显的语言讲述复杂的概念,力求做到通俗易懂、深入浅出。本书的宗旨是让读者不但要知其然,还要知其所以然,因此对于C++的一些语法特性,不但介绍如何使用,还会介绍C++为什么会有这个语法特性。

3.方便裁剪

书中每个章节安排适当,符合计算机相关专业的教学需求,不同学校可以针对自身的教学特点,选择不同的章节组合进行教学,教师也可以根据授课对象的实际情况进行灵活裁剪。

本书内容上主要分9章。

绪论:介绍了程序设计语言的历史和特点,面向对象方法的基本概念,面向对象的软件开发过程,以及程序开发的基本概念。

C++语言基础:介绍了C++程序设计的基础知识,简述了C++语言与C语言的区别,并介绍C++语言对C语言进行的扩展,包括基本数据类型和自定义数据类型、数据的输入与输出、三种基本控制结构(顺序、选择和循环结构)、指针和引用、函数重载等。

类与对象初步:介绍了面向对象程序设计的一大特性——封装。从数据封装的角度,介绍了面向对象程序设计中的核心概念——类,包括类的声明和实现,类成员的初始化(类的构造函数和析构函数),以及如何使用类解决具体问题(类的组合)。此外,还对比了类与结构体和联合体的区别,简单介绍了如何用UML描述类的特性。

数据的共享与保护:从数据共享的角度,介绍了标识符的作用域与可见性、对象的生存期、类的静态成员、类的友元;从保护共享数据的角度,介绍了常对象和常引用。最后介绍了多文件结构和编译预处理命令。

继承与派生:介绍了面向对象程序设计的另一大特性——继承。介绍了继承与派生的基本概念、派生类的声明和实现方式、派生类成员的初始化(派生类的构造函数和析构函数),讨论了三种不同派生方式下派生类对基类成员的访问控制方式,以及公有派生下派生类和基类的兼容规则,分析了多继承存在的二义性问题并提出了虚基类的解决方案。最后,分析了在解决实际问题时,如何合理运用类与类之间的继承、组合与使用关系。

多态性:介绍了面向对象程序设计的另一大特性——多态。简单介绍了多态的概念,详述C++支持的两种多态类型:静态多态(函数重载)和动态多态(虚函数),分析了虚析构函数的声明方式和必要性,以及纯虚函数和抽象类的使用场合。

流类库与输入/输出:介绍了输入/输出流的概念,以及C++输入/输出流类库的结构和使用方法。

异常处理:讲述了异常处理概念和基本思想,以及C++异常处理机制的实现,还简单介绍了异常处理中析构函数的处理和标准程序库异常处理。

个人银行账户管理系统:本章主要的目的是培养学生综合运用面向对象程序设计基本知识和方法进行项目设计的能力;初步培养学生运用软件工程思想进行项目设计的能力。

本书由湖南科技学院电子与信息工程学院组织编写,在总结各位教师多年教学经验的基础上,倾注了C++教学团队教师大量的心血。本书由李文、黄丽韶、吕兰兰任主编,郭力勇、何琛、扈乐华、周鹏、邵金侠任副主编,其中第1、2章由李文编写,第3、4章由黄丽韶编写,第5、6章由吕兰兰编写,第7章由郭力勇编写,第8章由何琛、周鹏编写,第9章由扈乐华、邵金侠编写。全书由李文、黄丽韶、吕兰兰统稿。在本书的写作过程中,编者参考了国内外许多优秀的同类教材以及网络资源,在此向其作者表示衷心感谢。感谢所有支持和帮助过本书编写的人们。

感谢以下项目的资助:

【1】湖南省普通高等学校“十三五”专业综合改革试点项目(湘教通〔2016〕276号);

【2】湖南省普通高校校企合作创新创业教育基地(湘教通〔2016〕436号);

【3】湖南科技学院计算机应用技术重点学科建设项目;

【4】教育部高教司产教合作项目(201601021003,201701034028,201702065165);

【5】湖南省教育厅教改项目(湘教通〔2016〕400号);

【6】湖南省教育科学“十三五”规划课题(XJK17QGD008)。

虽然编者在高校从事了多年的C++教学,但对这门与时俱进的语言仍然有不能掌控的地方。由于编者水平所限,加之时间仓促,书中难免存在不当和疏漏之处,恳请广大读者及同仁们批评指正,以便于我们在今后的版本中进行改进。

编者

2017年12月