Основы ООП: инкапусляция

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

С разработкой классов — аналогичная ситуация. К внутренней реализации не следует никого допускать, чтобы не нарушить работу класса. Это и называется инкапсуляцией, то есть "заключением в капсуле" всего важного. В MQL5, как и в C++, существует 3 уровня прав доступа. По умолчанию, устройство класса является приватным (private), то есть скрыто от всех его пользователей. Доступ к содержимому имеет только исходный код самого класса.

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

Второй уровень доступа позволяет заглядывать внутрь только "родственникам" (точнее, наследникам — о них через пару абзацев).

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

Каждый метод или поле имеют один из трех уровней доступа: какой именно — определяет разработчик класса.