前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MQL5从入门到精通【第六章】面向对象编程(一)

MQL5从入门到精通【第六章】面向对象编程(一)

作者头像
程序员小助手
发布2020-04-08 11:19:50
9020
发布2020-04-08 11:19:50
举报
文章被收录于专栏:程序员小助手

MQL5中增加的一个重要特性就是面向对象。面向对象编程提倡代码的重用,对用户隐藏无意义的接口细节。这位灵活创建大型的应用奠定了基础。

面向对象编程的信条,是属性的抽象化。对于新手而言,会有或多或少的疑惑。不过随着程序的深入,相信你会逐步掌握其中的诀窍。

两个部件,一是对象,一是类。类是属性和方法的集合。对象是实例化的类。

这么说吧,类呢,像是一个模具,对象就是一个一个的模型。我们把属性和方法,抽象为类。那么在使用的时候,对其进行实例化,这个对象就拥有了类所有的特性。

# Classes 类

类声明为全局作用域,就想函数。类可以放置在程序内部,或include文件内部。使用class关键词声明,且需要类名唯一。下面是一个类的例子:

代码语言:javascript
复制
class CIndicator
{
    protected:
        int handle;
        double main[];
    public:
        double Main(int pShift=0);
        void Release();
        CIndicator();
};

类名叫Cindicator。包含两个保护属性。共有方法中,声明了两个方法main, Release。还要一个默认的构造器constructor CIndicator()。为什么这么写,我们后面会专门讲解,无需担心。

# 属性修饰符

public,private,protected是访问修饰符,用于控制变量的使用范围。

  • Public - public属性,可在类外部使用,是与对象交互。pubilic方法,可用于修改类的私有属性。可继承。
  • Private - 仅在类内不可用。不对外访问。不可继承。
  • Protected - 与private功能同,可继承。

面向对象的信条,是对外隐藏类成员,我们称之为“封装”。

上面的例子内我们声明在类CIndicator内定义了一个公有方法Main()。我们在下面创建这个函数:

代码语言:javascript
复制
double CIndicator::Main(int pShift=0)
{
    CopyBuffer(handle,0,0,MAX_COUNT,main);
    double value = NormalizeDouble(main[pShift],_Digits);
    return(value);
}

该方法接收一个形参pShift。在函数体内容部,使用CopyBuffer赋值指标值并赋值给main[]数组。注意,这个main[]就是protected内声明的数组。接着对数组的值main[pShift]格式化并返回。

这个简单的方法,实现了对保护变量main的操作。

上面说的是常用的一种方法的声明和创建。还有一种懒惰的写法,行内直接定义和创建,想下面这样写:

代码语言:javascript
复制
public:
    void Release(){ IndicatorRelese(handle); }

这就可以了,少了一堆符号。好处不言而喻,坏处呢,就是不易扩展维护。每天都要变更需求,改来改去,推荐还是另一起一行,单独声明的好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # Classes 类
  • # 属性修饰符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档