Используете ли вы ООП в программировании на MQL4 и MQL5? - страница 4

 

ООП программирование основано на трех китах:

  • Композиция данных;
  • Декларация интерфейсов;
  • Скрытая реализация.

Намеренно не стал писать всякое там "наследование и полиморфизм", т.к. не раскрывает сути.

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

 

Про скорость исполнения кода.

ИМХО. ООП давало осязаемый выйгрыш в  скорости, когда железо не было таким быстрым, как сейчас. Ведь никому сейчас не приходит в голову апгрейдить современный ноутбук, для увеличения производительности. Для большинства задач разность в скорости не будет так заметна. А написать тормознутый код, можно используя любую парадигму. 

 
Vasiliy Sokolov:

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

2. Сортировка была указана лишь как пример. В большинстве случаев требуется сортировать сложные типы данных по нескольким критериям сортировки и без ООП это все превращается в ад.

3. Ну давайте ради интереса, напишите универсальный список List без использования классов и структур. Только функции и базовые типы. А это простейший из алгоритмов. Словарь Вы вообще адекватно без ООП не сделаете, а это один из наиболее часто используемых алгоритмов. Почитайте Кнута - узнаете много нового. Он хотя и использует в качестве примера низкоуровневый вымышленный язык, описание самих алгоритмов идет в виде манипуляций над классическими ООП объектами.

4. Человеческое мышление оперирует композитными объектами и действиями над ними. Например понятие "дверь" включает в себя дверное полотно, ручку/замок, фурнитуру, откосы и прочие мелочи. "Открыть дверь" означает совершить операцию сразу над множеством этих объектов. В ООП парадигме это действие будет таким же как и в жизни: получить объект типа "дверь". Вызвать метод "Открыть" этого объекта. В процедурном программировании все будет иначе: необходимо будет проделать специфические операции для каждого объекта, образующего множество дверь (повернуть ручку, сместить положение дверного полотна, переместить угол открытия петель и т.д.)

1. Это уже из области "а если одеть очки, а если не одеть". Кому-то очки не нужны. Функции можно собирать в библиотеки и не писать из повторно.

2. Никаких проблем и без и ООП. Вопрос привычки. 

3. Да. Но почему нет тотально перехода к спискам, почему все еще продолжают пользоваться динамическими массивами? Истый адепт ООП не должен пользоваться динамическими массивами, только списками. А вы, Василий, пропагандировали тут класс CArrayObj))

4. Никакой разницы. Почти одинаково, что в процедурном стиле делать, что в ООП. Неудачный пример. Разве что некоторые с ООП быстрее начинают задумываться о правильной структуре программы. Что в ООП что с функциями при вызове метода (функции) "открыть дверь", будут вызываться другие методы (функции): "перечитать координаты ручки", "пересчитать координаты замка". Можно и из классов бездумно городушки нагородить.

 
Vasiliy Sokolov:

ООП программирование основано на трех китах:

  • Композиция данных;
  • Декларация интерфейсов;
  • Скрытая реализация.

Намеренно не стал писать всякое там "наследование и полиморфизм", т.к. не раскрывает сути.

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

Неа.
 
Смутно себе представляю реализацию GUI без ООП.
 
Yuri Evseenkov:

Про скорость исполнения кода.

ИМХО. ООП давало осязаемый выйгрыш в  скорости, когда железо не было таким быстрым, как сейчас. Ведь никому сейчас не приходит в голову апгрейдить современный ноутбук, для увеличения производительности. Для большинства задач разность в скорости не будет так заметна. А написать тормознутый код, можно используя любую парадигму. 

C чего оно вдруг давало прирост в скорости работы?? Скорость разработки увеличивается в разы - это да.
 
Обратите внимание на результаты опроса - бОльшая часть присутствующих на форуме даже не знает что такое ООП и с чем его едят.
 
Alexandr Saprykin:
Обратите внимание на результаты опроса - бОльшая часть присутствующих на форуме даже не знает что такое ООП и с чем его едят.

Так правильно. Потому что вменяемому большинству, для решения задач под МТ4/5 -- ООП нафиг не нужно.

Большинству нужны советники и индикаторы, а не изучение языка как такового.

Если процедурное выучить проще и быстрее и оно позволяет решать 99% задач, то не зачем тратить время на изучение аспектов применения ООП.

 
Многие забывают, что здесь является целью... а mql -- это лишь инструмент.  И незаметно инструмент превратился в цель.  Эдакая метаморфоза "с ног на голову"  ;))
 
Олег avtomat:
Многие забывают, что здесь является целью... а mql -- это лишь инструмент.  И незаметно инструмент превратился в цель.  Эдакая метаморфоза "с ног на голову"  ;))
+
Причина обращения: