面向对象的程序设计
面向对象编程(OOP)主要关注的是数据,而数据和行为是不可分离地联系在一起的。数据和行为一起构成一个类,而对象是类实例。
面向对象方法的组成部分是:
类型的密封和扩展
继承
多态性
重载
虚函数
OOP认为计算是行为的建模。建模的项目是由计算抽象表示的对象。假设我们要编写一个著名的游戏“俄罗斯方块”。要做到这一点,我们必须学习如何建模由四个由边连接在一起的正方形组成的随机形状的外观。我们还需要调整形状的下降速度,定义形状的旋转和移位操作。在屏幕上移动形状受到井的边界的限制,这个要求也必须被建模。除此之外,填充的立方体必须被销毁,完成的点必须被计数。
因此,这个易于理解的游戏需要创建几个模型——形状模型、良好模型、形状运动模型等等。所有这些模型都是抽象的,用计算机中的计算来表示。为了描述这些模型,使用了抽象数据类型、ADT(或复杂数据类型)的概念。严格地说,DOM中的“shape”运动模型不是数据类型,而是对“shape”数据类型的一组操作,使用“well”数据类型的限制。
对象是类变量。面向对象编程允许您轻松地创建和使用ADT。面向对象编程使用继承机制。继承的好处在于,它允许从用户已经定义的数据类型中获得派生类型。
例如,要创建俄罗斯方块形状,首先创建基类形状很方便。表示所有七种可能的形状类型的其他类可以在其基础上派生。在基类中定义形状的行为,而在派生类中定义每个单独形状的行为的实现。
在OOP中,对象负责它们的行为。ADT开发人员应该包含一段代码来描述通常从相应对象中预期的任何行为。对象本身负责其行为这一事实极大地简化了为该对象的用户进行编程的任务。
如果我们想在屏幕上绘制一个图形,我们需要知道中心在哪里,以及如何绘制它。如果一个单独的图形知道如何绘制自己,那么在使用这种图形时,程序员应该发送一条“绘制”消息。
MQL4语言类似于c++,它还具有实现ADT的封装机制。一方面,封装结合了特定类型实现的内部细节,另一方面,它结合了能够影响这种类型对象的外部可访问函数。使用这种类型的程序可能无法访问实现细节。
OOP的概念有一系列相关的概念,包括:
模拟来自真实世界的行动
用户定义的数据类型
隐藏实现细节
代码通过继承重用的可能性
执行期间函数调用的解释
其中有些概念相当模糊,有些是抽象的,有些是一般的。