面向对象编程(OOP)是一种以数据为主导的编程方式,在这种方式中,数据与行为是不可分割的。数据和行为组成了一个类,而对象则是类的实例。
面向对象编程的核心组件:
- 封装和类型扩展性
- 继承
- 多态
- 重载
- 虚函数
OOP认为计算是行为的建模。被建模的项是通过计算抽象表示的对象。以经典游戏“俄罗斯方块”为例,我们需要建模随机出现的由四个方块组成的形状、形状的下落速度、形状的旋转和移动等。这些模型都是抽象的,通过计算机中的计算表示。
在OOP中,对象负责其行为。例如,如果我们想在屏幕上绘制一个形状,我们需要知道中心在哪里以及如何绘制它。如果单独的形状知道如何绘制自己,程序员在使用这样的形状时只需发送“绘制”消息即可。
例子:俄罗斯方块的形状建模
为了创建俄罗斯方块的形状,首先可以创建一个基类“形状”。其他表示所有七种可能的形状类型的类可以基于它派生。形状的行为在基类中定义,而每个单独形状的行为在派生类中定义。
例如:
class Shape:
def draw(self):
pass
class SquareShape(Shape):
def draw(self):
# 画一个方形
pass
class LShape(Shape):
def draw(self):
# 画一个L形
pass
MQL4语言与C++类似,也有用于实现ADT的封装机制。封装一方面结合了特定类型的实现的内部细节,另一方面结合了可以影响该类型对象的外部可访问函数。使用这种类型的程序可能无法访问实现细节。
面向对象编程的相关概念:
- 模拟现实世界中的动作
- 用户定义的数据类型
- 隐藏实现细节
- 通过继承重用代码
- 在执行期间解释函数调用
其中一些概念相对抽象,而另一些概念则更为普遍。总的来说,面向对象编程为程序设计提供了一个更为有序、结构化的方法,允许开发者在创建、修改和维护软件时获得更大的便利。