首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MQL5从入门到精通【第六章】面向对象编程(一)

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

作者头像
程序员小助手
发布于 2020-04-08 03:19:50
发布于 2020-04-08 03:19:50
1.1K01
代码可运行
举报
文章被收录于专栏:程序员小助手程序员小助手
运行总次数:1
代码可运行

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

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

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

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

# Classes 类

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
public:
    void Release(){ IndicatorRelese(handle); }

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MQL5从入门到精通【第六章】面向对象编程(二)
如果不显式声明构造器,系统会自动创建一个默认的构造器初始化变量。这个默认的构造器并不可见。
程序员小助手
2020/04/08
9140
第六章 面向对象编程(基础)
对象 : 实际存在的该类事物的每个个体 , 是具体的 , 所以也称为实例(instance)
捞月亮的小北
2023/12/01
2220
第六章 面向对象编程(基础)
Java复习【知识改变命运】第六章
1.区别相同名的类 2.当类很多时候更好的管理[API文档] 3.控制访问范围
用户11319080
2024/10/17
1080
Java复习【知识改变命运】第六章
第4章 类与面向对象编程第4章 类与面向对象编程
在前面的章节中,我们学习了Kotlin的语言基础知识、类型系统等相关的知识。在本章节以及下一章中,我们将一起来学习Kotlin对面向对象编程以及函数式编程的支持。
一个会写诗的程序员
2018/08/17
1.9K0
第4章 类与面向对象编程第4章 类与面向对象编程
MQL5从入门到精通【第七章】MQL5程序结构
顶部,是预处理声明;接着是输入变量和全局变量。最后是函数,类,以及定义的程序处理器。
程序员小助手
2020/04/08
1.2K0
【深入浅出C#】章节 4: 面向对象编程基础:封装、继承和多态
封装、继承和多态是面向对象编程中的核心概念,它们对于构建灵活、可扩展和可维护的软件系统至关重要。 封装(Encapsulation)通过将数据和相关操作封装在一个类中,隐藏内部实现细节,并提供公共接口来与外部进行交互。封装有助于保护数据的完整性和安全性,同时提供了良好的抽象,使得代码更易于理解和使用。封装还可以支持代码的模块化和团队开发,各个模块之间可以独立开发和测试,提高了代码的可维护性和复用性。 继承(Inheritance)允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。继承提供了代码的层次结构,使得相关的类可以组织在一起,并且可以通过继承实现代码的共享和统一的接口。继承还可以支持多态性,通过在子类中重写父类的方法,实现不同对象的不同行为。 多态(Polymorphism)允许同一操作在不同的对象上产生不同的行为。多态性提供了灵活性和扩展性,使得代码可以处理多种类型的对象,而不需要显式地针对每种类型编写不同的代码。多态性可以通过方法重写、方法重载和接口的使用来实现,它可以使代码更加灵活和可扩展,同时提高了代码的可读性和可维护性。
喵叔
2023/07/09
8720
【Java零基础入门篇】第 ③ 期 - 面向对象编程(一)
🍓🍓方法在很多地方被称为函数(在Java中英文单词是Method,而在其他语言中为function),方法是一段可以被重复调用的代码块,实现一个功能,一个动作或一种行为。 方法定义语法如下:
命运之光
2024/03/20
1390
【Java零基础入门篇】第 ③ 期 - 面向对象编程(一)
Java基础(七):面向对象编程-类和对象
Java微观世界
2025/01/21
1660
Java基础(七):面向对象编程-类和对象
【深入浅出C#】章节 4: 面向对象编程基础:类和对象的概念
类和对象是面向对象编程中最基本的概念,它们在程序设计中起着重要的作用。类是一种抽象的数据类型,用于描述具有相似属性和行为的一组对象。对象则是类的实例,代表了现实世界中的具体事物或概念。 面向对象编程的核心思想是将现实世界的事物抽象成类,通过创建对象来模拟和处理问题。类和对象的概念使得程序能够更加模块化、可维护和可扩展。下面是类和对象在面向对象编程中的重要性:
喵叔
2023/07/09
5830
Java面向对象编程中级
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,不能是关键字或保留字。 命名规范
timerring
2023/04/21
5550
Java面向对象编程中级
Java面向对象编程高级
在main方法中定义一个变量count,当一个小孩加入游戏后count++,最后个count 就记录有多少小孩玩游戏 。
timerring
2023/04/21
1.6K0
Java面向对象编程高级
Java编程基础阶段笔记 day 07 面向对象编程(上)
1.创建一个类,并在类中提供必要的属性和方法 2.由类派生出对象。(创建对象) 3.调用对象中的属性和方法。(对象名.属性名/方法名) //创建一个类 class Person{ //属性           String name; int age; char sex; //方法 public void run(){                    System.out.println(name + "跑起来");           } public void say(){                    System.out.println(name + "今年" + age);           } }     // main 方法中                    Person person = new Person(); //调用属性 : 对象名.属性名 person.name = "王庆港"; //给属性赋值 person.age = 23; //获取属性的值                    String name = person.name;                    System.out.println("name=" + name); //调用方法 :对象名.方法名 person.run(); person.say();
逸朗
2019/08/05
5990
Java编程基础阶段笔记 day 07 面向对象编程(上)
Java学习笔记——面向对象编程(核心)
面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
梦飞
2022/06/23
4630
深入解析 Java 面向对象编程与类属性应用
面向对象编程 (OOP) 是一种编程范式,它将程序组织成对象。对象包含数据和操作数据的方法。
小万哥
2024/02/20
1780
深入解析 Java 面向对象编程与类属性应用
C#学习基础之一——面向对象编程及new的用法总结
  所谓面向对象编程,我个人理解是,我们只用对象去实现我们的功能,这样可以很容易达到重复利用。过去用C编程时,我们要用重复的代码,首先考虑到肯定是声明一个函数来封装,使用时再调用即可。但是我想重复使用一类代码(比如创建一个窗体的代码),我们用面向过程的方式去归这一类代码比较困难,而且调用起来也不灵活,于是出现了 ”类“ 这个玩意,对应的便是面向对象编程。
vv彭
2021/11/29
1.5K0
【Java】基础13:面向对象编程
曾经我一度以为面向对象编程,就是程序员面对着自己的女朋友编程,因为这样会更加有动力有兴趣去写代码,不会脱发,秃顶。
刘小爱
2020/07/29
4320
Java——Java面向对象
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。
说故事的五公子
2020/04/13
2.5K0
《Java从小白到大牛》之第10章 面向对象基础(上)
面向对象是Java最重要的特性。Java是彻底的、纯粹的面向对象语言,在Java中“一切都是对象”。本章将介绍面向对象基础知识。
全栈程序员站长
2021/06/10
4060
使用 TypeScript 探索面向对象编程
在软件开发领域,面向对象编程 (OOP) 已成为创建复杂且可扩展应用程序的基本范例。支持 OOP 概念的最流行的编程语言之一是 TypeScript。TypeScript 是 JavaScript 的超集,它增加了静态类型和其他功能以增强代码的可维护性和可读性。在这篇博客中,我们将探讨 TypeScript 中面向对象编程的强大功能,以及它如何帮助我们构建健壮且高效的应用程序。
IT千锋教育
2023/06/05
7490
使用 TypeScript 探索面向对象编程
面向对象编程(OOP)
这节讲一下,什么是面向对象(Object Oriented Programming)。说面向对象之前,我们不得不提的是面向过程(Process Oriented Programming),C语言就是面向过程的语言,这两者的区别在哪呢?我们可以设想一个情景——厨房做菜:
宿春磊Charles
2022/03/29
5290
面向对象编程(OOP)
相关推荐
MQL5从入门到精通【第六章】面向对象编程(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档