
面向对象,Object Oriented Progamming,OOP。
1、类和对象
面向对象编程的两个重要概念:类(class)和对象(object)。类是抽象的概念,对象是具体的东西。
在面向对象编程的世界中,一切皆为对象,对象都有属性(数据)和行为(方法),每个对象都是独一无二的,而且对象一定属于某个类。
当把拥有共同特征的对象的静态特征(属性)和动态特征(行为)抽取出来之后,就可以定义出类。
如是一个类,它的属性包括最大速度、剩余油量等,它的方法可以有:加油、设定行驶速度等。
具体来说,一组数据结构和处理它们的方法的集合,称为类(class);类是具备某项功能的抽象模型,实际应用中,需要对类进行实例化,即为对象(object)。
如汽车是一个类(class),具体到每辆不同车就是对象(object)。
2、面向过程和面向对象
与面向对象编程相对的是面向过程编程,即把问题分解为一系列解题步骤,然后用函数实现这些步骤。
- 面向过程的思想:由过程、步骤、函数组成,从上到下,从大到小,逐步细化,以过程为核心;
- 面向对象的思想:先开发类,再得到对象,通过对象之间的调用解决问题,以对象为中心。
比如开发一个五子棋游戏。
面向过程的:首先分析解题步骤:开始游戏→黑子先走→绘制画面→判断输赢→轮到白子→绘制画面→判断输赢→返回步骤2,直到输出最后结果。然后用函数实现上面每个步骤。
面向对象的设计:整个五子棋可以设计为三个类:
- 玩家:黑白双方,这两方的行为是一样的;
- 棋盘:负责绘制画面;
- 规则:负责判定输赢。
然后,第一类对象(玩家)接受用户输入,并告知第二类对象(棋盘)棋子布局的变化,棋盘对象接收到了棋子的变化,就在屏幕上面显示出这种变化,同时第三类对象(规则)对棋局进行判定。
可以看出,面向对象是以功能来划分问题,而不是步骤。
3、面向对象编程的三大特点
面向对象编程的三大特点:封装性、继承性和多态性。
- 封装(encapsulation):就是将一个类的使用和实现分开,只保留有限接口与外部联系。对于用到该类的,不需关心这个类是如何实现的,只需知道如何使用。即通过类的封装隐藏类的内部实现细节。
- 继承(inheritance):就是派生类(子类)自动继承一个或多个基类(父类)的属性和方法,并可以重写或添加新的属性和方法。
- 多态(polymorphism):就是调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。多态最常见的用法就是声明基类类型的指针,利用该指针指向任意一个子类对象,可以根据子类的不同而实现不同的方法。通过多态实现基于对象类型的动态分派。
封装可以代码模块化,继承可以扩展已存在的代码,它们都可以实现代码重用;而多态则可以实现接口重用。
胜象大百科



