Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кстати я удивлён что такие основоположные парадигмы, не освещены в описании ООП в справке.
1 Не, не оно, это использование наследования.
2 уже теплее, это Композиция, которая является одним из трёх вариантов связывания, наряду с Ассоциацией и Агрегацией.
Кстати я удивлён что такие основоположные парадигмы, не освещены в описании ООП в справке.
Это скорее трюки программирования, а не непосредственные возможности ООП.
Что касается агрегации:
В объектно-ориентированном программировании под агрегированием (также называемом композицией или включением) подразумевают методику создания нового класса из уже существующих классов путём вложения. Об агрегировании также часто говорят как об «отношении принадлежности» по принципу «у машины есть корпус, колёса и двигатель».
Вложенные объекты нового класса обычно объявляются закрытыми, что делает их недоступными для прикладных программистов, работающих с классом. С другой стороны, создатель класса может изменять эти объекты, не нарушая при этом работы существующего клиентского кода. Кроме того, замена вложенных объектов на стадии выполнения программы позволяет динамически изменять её поведение. Механизм наследования такой гибкостью не обладает, поскольку для производных классов устанавливаются ограничения, проверяемые на стадии компиляции.
На базе агрегирования реализуется методика делегирования, когда поставленная перед внешним объектом задача перепоручается внутреннему объекту, специализирующемуся на решении задач такого рода.
http://ru.wikipedia.org/wiki/Агрегирование_(программирование)
справку по структурам откройте. а также приведение типов почитайте, про структуры.
члены методы были доступны с самого начала. Зачем их хотите убрать?
Ассоциация и другие способы связывания классов.
Один момент:
m_size.
Префикс m_ в общепринятых соглашениях об именовании приставляется членам-данным класса. Предназначен по большей части для явного отличия в методах локальных переменных от данных класса.
Прям таки функции можно писать в структуре? Наверно указатели на класс - видел, пробовал, лучше об этом не знать.
Почему коды не прогнаны через стайлер?
Новичку читать будет проблемно, в МЕ он видит один стиль, а в статье другой.
ЗЫ В статье не раскрыты вопросы связи классов.
А вообще конечно, ООП сложная тема, очень не просто её описать простым языком, но с чего то нужно начинать.
Ну и зачем оно ) . Вот паттерны это да, но это уже не уровень начинающих.
Один момент:
m_size.
Префикс m_ в общепринятых соглашениях об именовании приставляется членам-данным класса. Предназначен по большей части для явного отличия в методах локальных переменных от данных класса.
Префикс m_ использовался при программировании под MFC, применялся к private и protected переменным, никаких других "общепринятых" соглашений нет. После ухода MFC со сцены обо всех этих дурацких m_ все, слава богу, забыли )) Кто не верит - качаем примеры и убеждаемся (там есть раздел и по MFC) http://archive.msdn.microsoft.com/vcsamples
Префикс m_ использовался при программировании под MFC, применялся к private и protected переменным, никаких других "общепринятых" соглашений нет. После ухода MFC со сцены обо всех этих дурацких m_ все, слава богу, забыли )) Кто не верит - качаем примеры и убеждаемся (там есть раздел и по MFC) http://archive.msdn.microsoft.com/vcsamples
та не. При чем тут MFC? https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BD%D0%B3%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F_%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F
это удобство и не более. В каждой программистской компании свои правила могут быть.
Очень нужная статья!
Предлагаю разработчикам создать новую категорию для статей. Что-то вроде "Основы (теория) программирования"...
1) подумалось, здесь ошибка:
раздел: Передача параметров в конструктор"Функция Init() отставлена в секции private для обеспечения возможности переинициализации класса."
возможно:
Функция Init() отставлена в секции public для обеспечения возможности переинициализации класса.
2) Приведите, пожалуйста, пример использования возможности "создать массив с экземплярами классов (объектами)", для раздела" Массив объектов". Сам, к сожалению, не могу сообразить "с чем это едят".
3) в разделе "Еще об инкапсуляции (private, protected, public)" вскользь обозначено базовый класс->класс потомок. Возможно, эту данность (class Class: public CBase) надо в начале раздела объяснить, т.к. позже сообразил.
4) не нашёл:Рис.6. Видимость "лишней" функции (красная стрелка) определяется типом указателя, с помощью которого загружен класс. Этот пример находится в приложении в файле OOP_sDefaultVirtual_1.mq5.
5) Не нашёл четкого указания, что такое библиотека. Видимо, способ хранения класса(классов) функций? т.е. аналогично включаемому файлу, только включаемый файл - хранится в виде исходника, а библиотека в виде скомпилированной dll?
Огромное Спасибо за статью! Особенно порадовало, последовательное изложение материала.