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

 
Petros Shatakhtsyan:

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

Вот например в вашем доме есть стол, стулья, ложки и т.д, в том числе и сейф. Допустим, что к сейфу не все челны семьи имеют доступ. Но вот ваш друг из соседнего дома должен иметь доступ к вашему сейфу.

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

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

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

 
Georgiy Merts:

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

Да не же. Именно глобальные переменные, которые обрабатываются последовательно разными функциями - это правильный стиль. Иначе никак.

 
Andrei:

Пример недекватен.(что это ?  языковое нововведение ? :) Ограничение доступа не защищает код от взлома. Поэтому соседу  ваш исходный код будет виден если он часть общего проекта, а если не часть, то попортить он не сможет ничего и так.

Видимо вы раньше работали сапожником и смотрели много детективных и хакерских фильмов. 

 
Andrei:

Да не же. Именно глобальные переменные, которые обрабатываются последовательно разными функциями - это правильный стиль. Иначе никак.

есть даже специальная ветка форума :-) ищите и обрящите :-) заодно расширите всякое
 
Kino:
Не использую ООП и не собираюсь, всё что нужно для торговли есть в MQL4
Абсолютно согласен! 
Зачем навороты если даже простые вещи не работают в торговле) 
Хотя в mql5 есть масса плюсов в плане оптимизации но все это в том числе ООП не играет никакой роли если нет того, что вообще возможно оптимизировать)
Говорю как опытный трейдер программист mql и java и ещё нескольких языков программирования - все мусор, все в топку если не работает и не важно на чем Оно написано)
Интерфейсы, private protected, public static ... virtual ... synchronized...чё хотите выдумывайте но закрытые поля были сделаны что вы сами смогли потом разобраться в своей программе. Никому не нужно ломать ваш золотой код а если и понадобится какая разница что там у вас за классификаторы?)
Вопрос лишь в том что можно принять за основу в этом вся загвоздка. мало кто вообще может создать то на основе чего можно как с помощью кирпичиков строить роботов. Каждый такой кирпичик люди ищут годами десятилетиями и найти не могут а все тут уже об ООП заговорили)
Каждый на свой лад своему слову рад - дурдом настоящий)))
 
Georgiy Merts:

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

Если все переменные спрятаны внутри классов, то как обрабатывать внешние данные, которые существуют и обрабатываются на протяжении всей программы?

 
Andrei:

Если все переменные спрятаны внутри классов, то как обрабатывать внешние данные, которые существуют и обрабатываются на протяжении всей программы?

Доступ ко всем данным должен проходить через заранее утвержденные интерфейсы.  Это позволяет изменять структуру данных внутри классов, не затрагивая "внешние отношения" объектов. Интерфейс должен быть таким, чтобы пользователь его мог бы иметь доступ исключительно к тем данным, которые ему необходимы, и в том объеме, который необходим.

 
Georgiy Merts:

Доступ ко всем данным должен проходить через заранее утвержденные интерфейсы.  Это позволяет изменять структуру данных внутри классов, не затрагивая "внешние отношения" объектов. Интерфейс должен быть таким, чтобы пользователь его мог бы иметь доступ исключительно к тем данным, которые ему необходимы, и в том объеме, который необходим.

А как интерфейс забросит внешние данные в класс? Класс  же изолирован от всего.
 
Andrei:
А как интерфейс забросит внешние данные в класс? Класс  же изолирован от всего.

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

 
Konstantin Nikitin:

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

Как класс может видеть внешние переменные? И как внешние переменные попадут динамически во внутрь класса через функции?
Причина обращения: