Инкапсуляция (программирование): различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
исправление заблуждений, дополнение, оформление
→‎Подробности: дилетантская ахинея
Строка 11:
* языковая конструкция, позволяющая связать данные с методами, предназначенными для обработки этих данных.
 
Пренебрегая формализмом и способствуя интуитивному восприятию, инкапсуляцию можно определить с помощью [[Латинский язык|латинского]]  ''in capsula'' — размещение в оболочке, изоляция, закрытие чего-либо инородного с целью исключения влияния на окружающее, обеспечение доступности главного, выделение основного содержания путём помещения всего мешающего, второстепенного в некую условную капсулу ([[чёрный ящик]]). Однако данное определение является лишь приближением.
 
Стив Макконнелл в своей книге "Совершенный код" ограничивает область определения концепции инкапсуляции следующей аналогией: <blockquote>«Когда [[Абстракция данных|абстракция]] нас покидает, на помощь приходит инкапсуляция. Абстракция говорит: «Вы можете рассмотреть объект с общей точки зрения». Инкапсуляция добавляет: «Более того, вы не можете рассмотреть объект с иной точки зрения».Продолжим нашу аналогию: инкапсуляция позволяет вам смотреть на дом, но не дает подойти достаточно близко, чтобы узнать, из чего сделана дверь. Инкапсуляция позволяет вам знать о существовании двери, о том, открыта она или заперта, но при этом вы не можете узнать, из чего она сделана (из дерева, стекловолокна, стали или другого материала), и уж никак не сможете рассмотреть отдельные волокна древесины.Инкапсуляция помогает управлять сложностью, блокируя доступ к ней.»<ref>{{Книга|автор=Стив Макконнелл|заглавие=Совершенный код|ответственный=Пер. с англ. — М. : Издательство «Русская редакция», 2010|издание=|место=|издательство=|год=|страницы=|страниц=|isbn=}}</ref></blockquote>
Инкапсуляция, [[наследование (программирование)|наследование]] и [[полиморфизм (информатика)|полиморфизм]] (в форме [[ad hoc полиморфизм]]а или [[полиморфизм подтипов|полиморфизма подтипов]]) являются тремя столпами [[Объектно-ориентированное программирование|объектно-ориентированного программирования]], реализуя в нём принцип [[абстракция данных|абстракции данных]] (не путать с [[Абстрактный тип данных|абстрактными типами данных]], реализации которых предоставляют возможность инкапсуляции, но имеют иную природу).
 
== Примеры ==