Что такое классы? - страница 3

 
RickD:


Тут просто для обучения. В дальнейшем функцию SetName можно переопределить в будущих классах, добавить в нее дополнительные проверки. Чтобы name менять не просто так, а с ограничениями.

Ну так и в правилах написано что объекты нужно в приват, а функции в паблик.
 
eevviill:
Ну так и в правилах написано что объекты нужно в приват, а функции в паблик.

И переменные могут быть public. А функции private. Смотря что хочешь.

Чтобы вкурить суть классов, нужно поделать большой проект с кучей наследуемых классов.

Или покопаться в MFC.

 
А можно изучить C#. Это изначально объектно-ориентированный язык, как ни какой другой. Посмотреть куры от itvdn и всё поймёшь. Есть книги толковые, например, Эндрю Троелсен. Язык программирования C#5.0 и платформа .NET 4.5. Я сам по нему изучал. Всю базу точно проскачешь легко. А дальше уже более специфичные материалы нужно капать.
 
shanty:
А можно изучить C#. Это изначально объектно-ориентированный язык, как ни какой другой. Посмотреть куры от itvdn и всё поймёшь. Есть книги толковые, например, Эндрю Троелсен. Язык программирования C#5.0 и платформа .NET 4.5. Я сам по нему изучал. Всю базу точно проскачешь легко. А дальше уже более специфичные материалы нужно капать.
Толку с книг если консультироватся нету с кем?
 
eevviill:
Толку с книг если консультироватся нету с кем?

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

Последний раз когда я очередной раз прочитал Троелсена, я на индексаторах, вроде бы стопорнулся. А до них всё понял. Хотя это пришло не с первой ходки.

 

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

Еще один проект непростой делал. Там создал класс с торговыми операциями, по типу как в 5-ке, с простыми методами открытия buy(), buyStop() и т.д., close(ticket), closeALL(), modify() и т.д. Потом робот должен был торговать группой ордеров с разными TP, SL, лотностью и другими установками. Объединил эту группу в еще один класс. В советнике несколько тактик и каждая группа в свою очередь со своими правилами должна работать. Не знаю, без классов это все сложнее было бы. Хотя пару лет назад тоже не понимал, почему все так хвалят этот ООП. Потихоньку начинайте применять то тут, то там, понимание придет.

 
Функциональное программирование это каша из различных методов, ООП подход позволяет разбить код на объекты, есть допустим созданный экземпляр класса Informations из пакета Orders с помощью него сразу понятно мы можем получать информацию по ордерам позициям и.т.д. Все методы сгруппированы по своему назначению. Нет кучи глобальных переменных вверху списка. Код получается красивым понятным и структурированным. К тому же наследование позволяет задействовать то что уже было написано в новых классах, расширять его. Полиморфизм вообще замечательная вещь, с помощью базовых классов мы можем в цикле обращаться к предкам через таблицу виртуальных методов, вроде так называется. Писал я панель торговую, у меня там есть базовый класс Object который наследуют все графические элементы, кнопки лейблы и.т.д. Понадобилось мне в цикле скрывать и вновь отображать это всё. Создаём массив Object[i].Show(); всё готово. Даже думать не хочу насколько это всё сложно было бы реализовать функциональным подходом. Писанины прибавилось бы раза в 3 точно. Плюс переопределение операторов и ещё много всего полезного.
 
У меня вот проблемка возникла написаны классы, всё раскидано по пакетам. Но заказчик просит исходник, жутко неудобно переносить классы в код, к тому же каждый класс тянет за собой базовые классы. А отдавать библиотеку тоже не вариант, рассказывать заказчику зачем нужны дополнительные файлы и куда их кидать. Кто как решает данную проблему ?
 
eevviill:

Зачем в privat свойство класса писать?

Потом нужно дописывать функцию для записи свойства и ещё одну функцию для считывания. 

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

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

Никто вам не запрещает для индикаторов или экспертов, текст которых умещается в трех mqh файлах или -надцати функциях использовать всё в паблик. ИЛи вообще без классов.
Да к тому же на 100% уверен, что кроме вас этот код никто и видеть никогда не будет. Пишите его как хотите, хоть левой ногой, хоть копипастом из чужого кода.

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

PS
в MQL ООП особо не нужно. Так как основная библиотека функций и справочник они не ООП.
ООП тут используется только для скрытия пространства имён или как обвертки над стандартными функциями.

 
PozitiF:
У меня вот проблемка возникла написаны классы, всё раскидано по пакетам. Но заказчик просит исходник, жутко неудобно переносить классы в код, к тому же каждый класс тянет за собой базовые классы. А отдавать библиотеку тоже не вариант, рассказывать заказчику зачем нужны дополнительные файлы и куда их кидать. Кто как решает данную проблему ?
Если об этом не договаривались, то не давай. Это ж уже не заказ, как таковой, а интеллектуальная собственность. Я б тоже не отдавал все свои наработки кому-то по цене одного совка...
Причина обращения: