面向对象编程OOP的基本概念


面向对象编程OOP的基本概念

文章插图
 
面向对象编程,Object Oriented Progamming,OOP 。
1、类和对象面向对象编程的两个重要概念:类(class)和对象(object) 。类是抽象的概念,对象是具体的东西 。
在面向对象编程的世界中,一切皆为对象,对象都有属性(数据)和行为(方法),每个对象都是独一无二的,而且对象一定属于某个类 。
当把拥有共同特征的对象的静态特征(属性)和动态特征(行为)抽取出来之后,就可以定义出类 。
如汽车是一个类,它的属性包括最大速度、剩余油量等,它的方法可以有:加油、设定行驶速度等 。
面向对象编程OOP的基本概念

文章插图
 
具体来说,一组数据结构和处理它们的方法的集合,称为类(class);类是具备某项功能的抽象模型,实际应用中,需要对类进行实例化,即为对象(object) 。
如汽车是一个类(class),具体到每辆不同车就是对象(object) 。
面向对象编程OOP的基本概念

文章插图
 
2、面向过程和面向对象与面向对象编程相对的是面向过程编程,即把问题分解为一系列解题步骤,然后用函数实现这些步骤 。
  • 面向过程的思想:由过程、步骤、函数组成,从上到下,从大到小,逐步细化,以过程为核心;
  • 面向对象的思想:先开发类,再得到对象,通过对象之间的调用解决问题,以对象为中心 。

面向对象编程OOP的基本概念

文章插图
 
比如开发一个五子棋游戏 。
面向过程的设计:首先分析解题步骤:开始游戏→黑子先走→绘制画面→判断输赢→轮到白子→绘制画面→判断输赢→返回步骤2,直到输出最后结果 。然后用函数实现上面每个步骤 。
面向对象的设计:整个五子棋可以设计为三个类:
  • 玩家:黑白双方,这两方的行为是一样的;
  • 棋盘:负责绘制画面;
  • 规则:负责判定输赢 。
然后,第一类对象(玩家)接受用户输入,并告知第二类对象(棋盘)棋子布局的变化,棋盘对象接收到了棋子的变化,就在屏幕上面显示出这种变化,同时第三类对象(规则)对棋局进行判定 。
可以看出,面向对象是以功能来划分问题,而不是步骤 。
面向对象编程OOP的基本概念

文章插图
 
3、面向对象编程的三大特点面向对象编程的三大特点:封装性、继承性和多态性 。
  • 封装(encapsulation):就是将一个类的使用和实现分开,只保留有限接口与外部联系 。对于用到该类的程序员,不需关心这个类是如何实现的,只需知道如何使用 。即通过类的封装隐藏类的内部实现细节 。
  • 继承(inheritance):就是派生类(子类)自动继承一个或多个基类(父类)的属性和方法,并可以重写或添加新的属性和方法 。
  • 多态(polymorphism):就是调用成员函数时,会根据调用函数的对象的类型来执行不同的函数 。多态最常见的用法就是声明基类类型的指针,利用该指针指向任意一个子类对象,可以根据子类的不同而实现不同的方法 。通过多态实现基于对象类型的动态分派 。
封装可以代码模块化,继承可以扩展已存在的代码,它们都可以实现代码重用;而多态则可以实现接口重用 。
面向对象编程OOP的基本概念

文章插图

【面向对象编程OOP的基本概念】


    推荐阅读