面向对象编程,Object Oriented Progamming,OOP。
面向对象编程的两个重要概念:类(class)和对象(object)。类是抽象的概念,对象是具体的东西。
在面向对象编程的世界中,一切皆为对象,对象都有属性(数据)和行为(方法),每个对象都是独一无二的,而且对象一定属于某个类。
当把拥有共同特征的对象的静态特征(属性)和动态特征(行为)抽取出来之后,就可以定义出类。
如汽车是一个类,它的属性包括最大速度、剩余油量等,它的方法可以有:加油、设定行驶速度等。
具体来说,一组数据结构和处理它们的方法的集合,称为类(class);类是具备某项功能的抽象模型,实际应用中,需要对类进行实例化,即为对象(object)。
如汽车是一个类(class),具体到每辆不同车就是对象(object)。
与面向对象编程相对的是面向过程编程,即把问题分解为一系列解题步骤,然后用函数实现这些步骤。
比如开发一个五子棋游戏。
面向过程的设计:首先分析解题步骤:开始游戏→黑子先走→绘制画面→判断输赢→轮到白子→绘制画面→判断输赢→返回步骤2,直到输出最后结果。然后用函数实现上面每个步骤。
面向对象的设计:整个五子棋可以设计为三个类:
然后,第一类对象(玩家)接受用户输入,并告知第二类对象(棋盘)棋子布局的变化,棋盘对象接收到了棋子的变化,就在屏幕上面显示出这种变化,同时第三类对象(规则)对棋局进行判定。
可以看出,面向对象是以功能来划分问题,而不是步骤。
面向对象编程的三大特点:封装性、继承性和多态性。
封装可以代码模块化,继承可以扩展已存在的代码,它们都可以实现代码重用;而多态则可以实现接口重用。