Object-Oriented Programming
面向对象编程
面向对象编程(OOP)是一种主要关注数据的编程方式,数据和行为被不可分割地联系在一起。数据和行为共同构成了一个类,而对象则是该类的实例。
面向对象方法的组成部分包括:
OOP将计算视为行为的建模。被建模的实体是由计算抽象表示的对象。假设我们想要编写一个著名的游戏“俄罗斯方块”。为此,我们必须学会如何建模由四个正方形通过边缘连接而成的随机形状的外观。我们还需要控制形状下落的速度,定义旋转和移动形状的操作。形状在屏幕上的移动受到边界的限制,这一要求也必须被建模。此外,填充的行必须被摧毁,并且必须计算得分。
因此,这个易于理解的游戏需要创建多个模型——形状模型、边界模型、形状移动模型等。所有这些模型都是抽象,由计算机中的计算表示。为了描述这些模型,使用了抽象数据类型(ADT)的概念,即复杂数据类型。严格来说,DOM中“形状”运动的模型不是一种数据类型,而是一组对“形状”数据类型的操作,这些操作利用了“边界”数据类型的限制。
对象是类变量。面向对象编程允许你轻松创建和使用ADT。面向对象编程使用继承机制。继承的好处在于它允许从用户已经定义的数据类型中获取派生类型。
例如,要创建俄罗斯方块的形状,首先创建一个基础类Shape是方便的。其他代表所有七种可能形状类型的类都可以基于它进行派生。形状的行为在基类中定义,而每个单独形状的行为实现则在派生类中定义。
在OOP中,对象负责自己的行为。ADT开发者应该包含代码来描述通常期望从相应对象中得到的任何行为。对象本身负责其行为的事实,大大简化了该对象用户的编程任务。
如果我们想要在屏幕上绘制一个形状,我们需要知道中心位置以及如何绘制它。如果单个形状知道如何自我绘制,程序员在使用这样的形状时应该发送“绘制”消息。
MQL4语言类似于C++,它也拥有用于实现ADT的封装机制。一方面,封装结合了特定类型实现的内部细节,另一方面,它结合了可以影响该类型对象的外部可访问函数。对于使用这种类型的程序来说,实现细节可能是不可访问的。
OOP概念有一系列相关概念,包括:
- 现实世界行为的模拟
- 用户定义的数据类型
- 隐藏实现细节
- 通过继承实现代码复用
- 执行过程中函数调用的解释
- 其中一些概念相当模糊,一些是抽象的,其他则是通用的。