面向对象程序设计(Object Oriented Programming, OOP),有别于面向过程程序设计(Procedure Oriented Programming, POP),它强调“对象”这一个概念,面向对象程序设计就是使用对象进行程序设计。要理解什么是面向对象程序设计,就不得不先理解两个概念————“对象”和“类”。那么,什么是“对象”,什么是“类”呢?
什么是对象
对象(object)代表现实世界中可以明确标识的一个实体。例如:一辆汽车,一个老师,一张桌子,一个圆,或者一笔贷款等都可以视作对象。每个对象都有自己独特的标志,状态和行为。
- 一个对象的状态 (state, 也称为特征 property 或者属性 attribute)是指那些具有当前值的数据域。例如:把圆视作对象,那半径就是圆对象的状态,不同的圆有不同的半径,它是标识圆的属性。
- 一个对象的行为(behavior, 也称作动作 action)是由方法(function,也称函数)定义的,调用对象的一个方法就是要求对象完成一个动作。例如:可以为圆对象定义一个名为 getArea() 的方法,则圆对象可以通过调用 getArea() 来返回圆的面积。
什么是类
类(class)用于定义同一类型的对象。类是一个模板,蓝本,或者合约。类用来定义对象的数据域是什么以及方法是做什么的。
对象和类的关系
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
- 一个对象是类的一个实例
- 一个类可以创建多个实例
- 创建新实例的过程叫做实例化
- 对象可以视为类的具体化
举个栗子:类就好比是一种汽车的设计图,里面定义了汽车的各项参数(汽车款式,材料)————即“数据域”,也定义了汽车的各项功能(启动,行进,转弯)————即“方法”。而对象就好比按照这张设计图造出来的一辆辆汽车。
有关面向对象程序设计
前文提到,面向对象程序设计有别于面向过程程序设计,下面通过用两种编程思想来编写一个五子棋程序的例子,来说明两者的区别:
- 面向过程编程语言:程序=算法+数据
- 面向对象编程语言:程序=对象+消息
面向过程思想:
- 开始游戏
- 黑子先走
- 绘制画面
- 判断输赢
- 轮到白子
- 绘制画面
- 判断输赢
- 返回步骤 2
- 输出最后结果
面向过程:是一种以过程为中心的编程思想。
- 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了
面向对象思想:
- 黑白双方,这两方的行为是一模一样的;
- 棋盘系统,负责绘制画面;
- 规则系统,负责判定诸如犯规、输赢等。
- 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定
面向对象:是一种以事物为中心的编程思想。
- 它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
不难看出,面向对象思想具有以下特点:
- 面向对象是以功能来划分问题,而不是步骤
- 更加拟物化
发表回复