Вопросы по ООП в MQL5 - страница 51

 
Sergey Dzyublik:

1. Получается структура данных Дерево - это все от лукавого...
2. Бедный С++ в нем же class == private struct, что же делать, наверное стоит отказаться от структур и классов.
3. И это правильно: нет тебе ни паттернов, ни сортировки через указатели, ни экономии по памяти, особенно для больших объектов, ...
4. Нужно не забыть еще запретить использование интерфейсов и шаблонных функций, а то вообще не понятно с каким объектом происходит работа - ужас то какой... 

1. Не, ну почему же. Если вы о об узлах дерева (или связанного списка), меняющих своё состояние, то просто всё дело в организации доступа к этому состоянию.  С точки зрения функциональной чистоты кода, у пользователя не должно быть доступа к состоянию узла.  Всю итерацию по узлам нужно проводить через обращение к самому дереву:   tree.NextNode(myNode)  или tree.Parent(myNode),  а не  myNode.NextNode() или myNode.Parent().

Т.е. изменяемое состояние не должно быть доступно публично.

2.  Ну смотрите, шарповскую структуру я взял потому, что на неё гарантированно нельзя взять ссылку/указатель. Т.е. всё под контролем компилятора.  Если же такого контроля нет, то придётся обеспечить личный контроль.  Например, через соответствующее именование классов. Допустим так:

class MyClass_mut;  // mutable

class MyClass_immut;  // immutable

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

 
Aleksey Mavrin:

Дмитрий, уверяю, я бы и над вами с радостью посмеялся, ну люблю я это дело) но в данном случае вы преувеличили, даже особо ну улыбнуло.

Вы просто действительно перепутали - СНИМОК не равно КОПИРОВАНИЕ ОБЪЕКТА, я вам подсказал.

Если неясно отличие специально для вас поясню на примере - объект 1000 байт, для снимка нужно 200, зачем копировать 800, тем более если снимков нужно хранить много-много.

p/s/  Да и вообще. Неужели нет у людей понимания что паттерны - всего лишь элементарный пример решения элементарной ТИПОВОЙ задачи. А на деле задачи не элементарные, а посложнее. И для решения реальных задач паттерны и нужны, только зачастую не в чистом книжном виде, а в адаптированном под конкретную задачу, возможно скомбинированные между собой, возможно с добавлением какой-либо импровизации, выраженной иногда в упрощении, если задача позволяет, или наоборот "утяжелении" реализации. 

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

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

 
Aleksey Mavrin:

...

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

.

Sergey Dzyublik:

...
4. Нужно не забыть еще запретить использование интерфейсов и шаблонных функций, а то вообще не понятно с каким объектом происходит работа - ужас то какой... 

Как-нибудь, где-нибудь почитайте, что такой интерфейсы и зачем они нужны.

-

Да и эта... Вы что, серьезно сопоставляете возможность сохранения всех или некоторых полей объекта с функцией undo/redo? Давай фотошоп обсудим, ведь вы же знаете, как там это сделано.

-

И кто из вас тут весь такой под шоколадом мне на мыло пишет?

-

И вообще, в чем проблема? Я вам пошатнул устои вашей веры в "Святые Паттерны"?

 
любитель-самоучка, ничего кроме mql не видавший, учит дядек как правильно программы писать, во где смешно заходить читать )
 

перебирал тут книжный шкаф.

Отличная находка: "Введение в теории искусственного интеллекта и экспертных систем с иллюстрациями на бейсике" 1987 г. Одна из глав "концепция объектно-ориентированного программирования" 

Поверьте - НИЧЕГО не поменялось...

 
Maxim Kuznetsov:

перебирал тут книжный шкаф.

Отличная находка: "Введение в теории искусственного интеллекта и экспертных систем с иллюстрациями на бейсике" 1987 г. Одна из глав "концепция объектно-ориентированного программирования" 

Поверьте - НИЧЕГО не поменялось...

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

 
Dmitry Fedoseev:

Многое изменилось, тогда не было церкви почитателей Святых Паттернов Проектирования.

этого и сейчас нет, можете поиском по рунету пройдись, если количество вопросов на тему паттернов в рунете очень мало, значит этого нет как массовости, "книжные" вопросы студентов не в счет

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

 
Dmitry Fedoseev:

Многое изменилось, тогда не было церкви почитателей Святых Паттернов Проектирования.

"Паттерн проектирования" - всего-лишь договорённость одни и те-же часто встречающиеся вещи звать одними и теми-же именами. И кстати термин пришёл из архитектуры (там где про скульптуры/мосты/портики/порталы). 

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

но есть конечно люди "дай дураку стеклянный фалос - и вещь разобъёт и себя порежет"

 
Igor Makanu:

этого и сейчас нет, можете поиском по рунету пройдись, если количество вопросов на тему паттернов в рунете очень мало, значит этого нет как массовости, "книжные" вопросы студентов не в счет

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

Ничего в них не заложено. Сколько паттернов вы изучили? 

 
Dmitry Fedoseev:

Ничего в них не заложено. Сколько паттернов вы изучили? 

что подразумевается под словом изучили?

если прочитал описание на нескольких форумах, то с десяток точно

если применил в MQL , то один - стратегия , работает, масштабируется, рефакторинг без проблем - хош под тестер все выбросил лишнее, чтобы быстрее оптился, а хош сразу на демку - в общем удобно и практично