- Основы ООП: абстракция
- Основы ООП: инкапусляция
- Основы ООП: наследование
- Основы ООП: полиморфизм
- Основы ООП: композиция (дизайн)
- Определение класса
- Права доступа
- Конструкторы: по умолчанию, параметрический, копирования
- Деструкторы
- Ссылка на себя: this
- Наследование
- Динамическое создание объектов: new и delete
- Указатели
- Виртуальные методы (virtual и override)
- Статические члены
- Вложенные типы, пространства имен и оператор контекста '::'
- Разнесение объявления и определения класса
- Абстрактные классы и интерфейсы
- Перегрузка операторов
- Приведение объектных типов: dynamic_cast и указатель void *
- Указатели, ссылки и const
- Управление наследованием: final и delete
Основы ООП: инкапусляция
Чтобы понять, что такое инкапсуляция, вернемся на минуту снова в реальность. Когда мы приобретаем какой-то бытовой прибор, то он обычно "опечатан" и находится на гарантии. Нам разрешено использовать его в штатных режимах, но производитель не приветствует, если мы вскроем корпус и начнем "копаться внутри", причем не обязательно в буквальном смысле: например, чтобы разогнать процессор компьютера можно использовать специальные утилиты, но это также лишает нас гарантии, потому что может привести оборудование к выходу из строя.
С разработкой классов — аналогичная ситуация. К внутренней реализации не следует никого допускать, чтобы не нарушить работу класса. Это и называется инкапсуляцией, то есть "заключением в капсуле" всего важного. В MQL5, как и в C++, существует 3 уровня прав доступа. По умолчанию, устройство класса является приватным (private), то есть скрыто от всех его пользователей. Доступ к содержимому имеет только исходный код самого класса.
Напомним, что пользователи класса — это тоже программисты. И даже если вы пишете класс для себя, имеет смысл воспользоваться максимальными ограничениями, чтобы не сломать класс случайно (в конце концов, людям свойственно ошибаться и забывать особенности собственных разработок спустя некоторое время, а у программ есть тенденция бесконечно разрастаться).
Второй уровень доступа позволяет заглядывать внутрь только "родственникам" (точнее, наследникам — о них через пару абзацев).
Наконец, третий уровень доступа, который можно выбрать — публичный. Он как раз предназначен для внешних программных интерфейсов, позволяющих из любой части программы применять объекты по их основному назначению.
Каждый метод или поле имеют один из трех уровней доступа: какой именно — определяет разработчик класса.