第一章 面向对象编程技术概述

内容提要:

本章主要概述面向对象编程技术的基本概念和基本特征,目的是让读者尽早理解对象与类的概念,对面向对象编程技术的抽象、封装、继承、多态进行初步了解,以方便后面更深入的学习。本章举例介绍 了 Visual Studio 2019 集成开发环境下 C++程序的编译、连接与运行过程。由于书中的例程都要用到 C

++标准库,因此本章最后对 C++标淮库的主要内容进行了简单介绍。本章涉及不少新的概念或名词,读者暂时理解不了也无须着急,通过后面的学习会逐渐掌握

1.1 两种编程方法举例

1.1.1 面向过程编程方法

面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。

举个例子,下五子棋,面向过程的设计思路是首先分析解决这个问题的步骤:

(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(2) (9)输出最后结果。

用函数实现上面一个一个的步骤,然后在下五子棋的主函数里依次调用上面的函数(不同的编程语言有不同的调用方法,我这里写的是直接调用):

下五子棋{

开始游戏();

黑子先走();

绘制画面();

判断输赢();

轮到白子();

绘制画面();

判断输赢();

返回到 黑子先走();

输出最后结果;

}

可见,面向过程始终关注的是怎么一步一步地判断棋局输赢的,通过控制代码,从而实现函数的顺序执行。

1.1.2 面向对象编程方法

面向对象编程是将程序设计为对象之间通过消息进行通信的相互协作。这里的对象,是指具有唯一地址的、占据计算机一块内存区域的实体,和现实世界中的对象一样,由属性和行为构成。

其中,属性用数据表示,用来描述对象的静态特征;行为通过函数代码实现,用来描述对象的动态功能,是作用于数据上的一些操作(过程、行为、功能、方法、算法等)。

扫描二维码关注公众号,回复: 14788974 查看本文章

所以,面向对象编程中的对象是数据结构和算法的封装体。

在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:

(1)黑白双方,这两方的行为是一样的。

(2)棋盘系统,负责绘制画面

(3)规则系统,负责判定犯规、输赢等。

然后赋予每个对象一些属性和行为:

(4)第一类对象(黑白双方)负责接受用户输入,并告知第二类对象(棋盘系统)棋子布局的变化,棋盘系统接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以看出,面向对象是以功能来划分问题,而不是以步骤解决。比如绘制画面这个行为,在面向过程中是分散在了多个步骤中的,可能会出现不同的绘制版本,所以要考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘系统这个对象中出现,从而保证了绘图的统一。

在设计面向对象程序时,应该更加关注的是抽象数据类型(类)的定义和类对象的创建与使用:

类与对象是面向编程的两个重要概念。类与对象的关系即数据类型与变量之间的关系,一个类可以创建多个对象,而每个对象只能是某一个类的对象。类规定了可以用于存储什么数据,而对象用于实际存储数据,每个对象可以存储不同的数据。

类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。而对象是类的一个具体的体现,例如,把雁群比作大雁类,那么大雁类就具备了喙、翅膀和爪等属性,觅食、飞行和睡觉等行为,而一只要从北方飞往南方的大雁则被视为大雁类的一个对象。如下图:

1.2面向对象编程的基本特征

面向对象设计具有三大基本特征:封装、继承和多态。

1.2.1封装

封装是面向对象编程的核心思想,其将对象的属性和行为封装起来。而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机,只需要使用手指敲击键盘就可以实现一些功能,而无须知道计算机内部是如何工作的。

采用封装思想保证了类内部数据结构的完整性,使用该类的用户不能直接看到类中的数据结构,而只能执行类允许公开的数据,这样就避免了外部对内部数据的影响,提高了程序的可维护性。

1.2.2继承

以平行四边形为例,如果把平行四边形看作四边形的延伸,那么平行四边形就复用了四边形的属性和行为,同时添加了平行四边形特有的属性和行为,如平行四边形的对边平行且相等。我们可以把平行四边形类看作是继承四边形类后产生的类,其中,将类似于平行四边形的类称为子类,将类似于四边形的类称为父类或超类。值得注意的是,在阐述平行四边形和四边形的关系时,可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形。所以,继承是实现重复利用的重要手段,子类通过继承复用了父类的属性和行为的同时,又添加了子类特有的属性和行为。

1.2.3多态

将父类对象应用于子类的特征就是多态。比如创建一个螺丝类,螺丝类有两个属性:粗细和螺纹密度;然后再创建了两个类,一个是长螺丝类,一个是短螺丝类,并且它们都继承了螺丝类。这样长螺丝类和短螺丝类不仅具有相同的特征(粗细相同,且螺纹密度也相同),还具有不同的特征(一个长,一个短,长的可以用来固定大型支架,短的可以固定生活中的家具)。即,一个螺丝类衍生出不同的子类,子类继承父类特征的同时,也具备了自己的特征,并且能够实现不同的效果,这就是多态化的结构。

猜你喜欢

转载自blog.csdn.net/Lookdrama/article/details/129266039