Обсуждение статьи "MQL5 для "чайников": Как проектировать и конструировать классы объектов" - страница 5

 
joo:

... Помогите разобраться.

А Вы попробуйте генетические алгоритмы переписать в стиле ооп. Они так и просятся туда.

Кроме того, в чужом коде лень ковыряться, а вот в своём нет. Начните и у Вас всё получится, а за одно и сравните быстродействие обоих вариантов. По моей обрывочной статистике, ооп замедляет работу программ.

 
joo:

Всё же, я не вижу плюсов от использования ООП. Может быть, это мешает понять мне, что за звери такие "классы".

То, что Вы сказали, можно оформить в виде отдельных функций. Или не всё? Я не придираюсь, прошу понять меня правильно - пытаюсь понять принципы ООП.

Хотелось бы увидеть на конкретных простых примерах разницу в скорости работы соответствующим образом оформленных кодов (с ООП и без), и преимущества ООП в плане простоты организации проектов.

Странно слышать от разработчика с вашими навыками вопросы по ООП ;-). Наверно Вы шутите. Разумеется, можно обойтись без ООП и все реализовать функциями. Но это просто менее удобно с человеческой точки зрения - развивать и сопровождать. Скорость работы самой программы от ООП не увеличивается.

Если продолжить тот же пример с классами стратегиями, предположим есть фрагмент кода, который должен открытые позиции в соответствии с их стратегиями тралить. Если реализовывать на функциях, получим что-то вроде:

foreach Position in Positions[]
 if StrategyType(Position) == N1 TrailTypeN1(Position);
 else if StrategyType(Position) == N2 TrailTypeN2(Position);
 ...

А если с использованием ООП:

foreach Position in Positions[]
 Position.Trail;

Налицо преимущества: запись компактная и понятная, в случае добавления новых типов стратегий данную часть кода не прийдется менять, не надо передавать (потенциально кучу) параметров или же объявлять вместо них глобальные переменные, массивы, которые можно ненароком попортить из других участков кода...

В общем, книжек же вроде много по этому поводу. Или суть вопроса в другом?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
DC2008:

А Вы попробуйте генетические алгоритмы переписать в стиле ооп. Они так и просятся туда.

После написания статьи от администрации было предложение/просьба переписать с ООП. Я честно признался, что не "шарю". Разрешили опубликовать как есть.

Пробую. Пока не получается. Когда переделаю, код с ООП и документацией будет добавлен к статье.

DC2008:

Начните и у Вас всё получится, а за одно и сравните быстродействие обоих вариантов. По моей обрывочной статистике, ооп замедляет работу программ.

Ну вот, Вы подтверждаете моё мнение о меньшем быстродействии кода с ООП. По своему опыту работы совместно с разработчиками, владеющими знанием ООП, быстродействие снижается весьма значительно - до двух раз (сравнивали мой код и код партнера, выполняющий туже задачу).

marketeer:

Странно слышать от разработчика с вашими навыками вопросы по ООП ;-). Наверно Вы шутите.

К сожалению, не шучу. Да, дорос до размера мамонта. Теперь пытаюсь избавится от атавизмов - шерсти.

marketeer:

Разумеется, можно обойтись без ООП и все реализовать функциями. Но это просто менее удобно с человеческой точки зрения - развивать и сопровождать.

Да, хочется "гибкости". Поэтому и интересуюсь.

marketeer:

..............

В общем, книжек же вроде много по этому поводу. Или суть вопроса в другом?

Видимо, не улавливаю какую то тонкость. :(

Ну да ладно. Одолею и эту маленькую стенку на своем пути. :)

 
Начал изучать классы. Наткнулся эту статью. Да, да мне нужно именно такой простенький интерфейс вставить в мой советник. Хотел на файлики автора взглянуть, а там пусто... :-( точнее в папке masterwindows-doc.zip, пустой файл справки MasterWindows-Doc.chm Очень жаль! Может быть уже всё о чём говорилось в этой статье уже давно устарело?
 
Aleksandr Brown:
Начал изучать классы. Наткнулся эту статью. Да, да мне нужно именно такой простенький интерфейс вставить в мой советник. Хотел на файлики автора взглянуть, а там пусто... :-( точнее в папке masterwindows-doc.zip, пустой файл справки MasterWindows-Doc.chm Очень жаль! Может быть уже всё о чём говорилось в этой статье уже давно устарело?

Проверил. Файл в порядке. 

На всякий случай вставлю сюда. 

Файлы:
 
Sergey Pavlov:

Проверил. Файл в порядке. 

На всякий случай вставлю сюда. 

Большое спасибо, за проявленное внимание. Признаюсь, это я немного сглупил. Пару дней назад свежую операционку поставил, и службы безопасности блокировали все скачанные файлы из интернета. Точнее программы при помощи которых они открываются запускались, а содержимое скачанного файла не отображалось. Сейчас всё наладил, и прикреплённый в статье файлик тоже норм открывается. Оформлено всё очень красиво и понятно спасибо.
 
При попытке скомпилировать MasterWindows жалуется "'CMasterWindowsEXE::Run' - cannot call protected member function ClassMasterWindows.mqh" на строку "WinEXE.Run()". Подскажите как бороться?
 
alventa:
При попытке скомпилировать MasterWindows жалуется "'CMasterWindowsEXE::Run' - cannot call protected member function ClassMasterWindows.mqh" на строку "WinEXE.Run()". Подскажите как бороться?

Библиотека MasterWindows доступна в CodeBase. Там же есть примеры использования этой библиотеки в панелях [1, 2, 3].

Причина обращения: