Инкапсуляция (компьютерное программирование)
-
Определение и роль инкапсуляции
- Инкапсуляция объединяет данные и методы для их обработки.
- Ограничивает прямой доступ к данным, сохраняя их внутреннюю структуру.
- Создает согласованный интерфейс, не зависящий от внутренней реализации.
-
Примеры и ограничения
- Скрывает значения и состояние структурированных данных внутри класса.
- Предотвращает нарушение инвариантности состояния методами.
- Побуждает программистов упорядочивать код, связанный с данными, в одном классе.
-
Инкапсуляция в объектно-ориентированных языках
- Все системы ООП поддерживают инкапсуляцию.
- Реализации абстрактных типов данных и библиотек также обеспечивают инкапсуляцию.
-
Скрытие информации и наследование
- Инкапсуляция может использоваться для скрытия данных и функций-членов.
- Наследование часто нарушает инкапсуляцию, предоставляя доступ к деталям реализации.
- Проблема yo-yo указывает на сложность и недоступность отладки при чрезмерном использовании наследования.
-
Сокрытие информации в языках программирования
- Некоторые языки, такие как Smalltalk и Ruby, ограничивают доступ только через объектные методы.
- Большинство других языков предоставляют программисту контроль над скрытым доступом через ключевые слова.
- Стандарт ISO C++ определяет защищенные, частные и общедоступные спецификаторы доступа.
-
Примеры ограничения доступа к данным
- C++, C#, Java, PHP, Swift и Delphi предлагают способы ограничения доступа к полям данных.
- В C структура может быть объявлена с помощью ключевого слова extern, скрывая содержимое от клиентов API.
- В Python переменные с символом подчеркивания считаются закрытыми.
-
Дополнительные ресурсы
- Ссылки на наследование, объектно-ориентированное программирование, шаблоны проектирования и другие связанные темы.