Объектно-Ориентированное Программирование на MQL5

В процессе разработки программ рано или поздно возникает проблема с тем, что встроенных типов и набора функций становится недостаточно для эффективной реализации планов. Сложность управления множеством мелких сущностей, из которых состоит программа, нарастает как снежный ком, и требует применения каких либо технологий для повышения удобства, производительности и качества труда программиста.

Одна из таких технологий, реализуемая на уровне многих языков программирования, называется Объектно-Ориентированной, а программирование с её использованием — соответственно, Объектно-Ориентированным Программированием (ООП). Язык MQL5 также её поддерживает и потому относится к семейству объектно-ориентированных языков, как и C++.

Из самого названия технологии можно заключить, что она построена на объектах. По сути, объект — это переменная пользовательского типа, то есть типа, определенного программистом средствами MQL5. Возможность создавать типы, моделирующие предметную область, делает программы более понятными, упрощает их написание и сопровождение.

В MQL5 существует несколько способов определить новый тип, причем каждый способ характеризуется некоторыми особенностями, которые мы опишем в соответствующих разделах. В зависимости от способа описания, пользовательские типы делятся на классы, структуры и объединения. Все они могут сочетать в себе данные и алгоритмы, то есть описывают состояние и поведение прикладных объектов.

В первой Части книги мы приводили фразу одного из отцов программирования Никлауса Вирта о том, что программы — это симбиоз алгоритмов и структур данных. Получается, что и объекты представляют собой мини-программы — каждая ответственна за решение собственной, пусть и небольшой, но логически завершенной задачи. Компонуя объекты в единую систему, можно выстроить сервис или продукт произвольной сложности. Таким образом, в ООП мы находим новое прочтение принципа "разделяй и властвуй".

ООП следует рассматривать как более мощную и гибкую альтернативу процедурному стилю программирования, который мы изучили во второй Части. Вместе с тем, не следует противопоставлять оба подхода: при необходимости их можно комбинировать, а в наиболее простых задачах можно обойтись и без ООП.

Итак, в этой третьей Части книги мы изучим принципы ООП и возможности их практической реализации на MQL5. Кроме того, мы расскажем о шаблонах, интерфейсах и пространствах имен.