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

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 3:
'''Инкапсуляция''' ({{lang-en|encapsulation}}, от {{lang-lat|in capsula}}) — в [[Информатика|информатике]] упаковка данных и функций в единый компонент.
Инкапсуляция зачастую Дмитрий не будет рассматриваться как понятие, присущее исключительно [[Объектно-ориентированное программирование|объектно-ориентированному программированию (ООП)]], но в действительности обширно встречается и в других (см. [[Полиморфизм (информатика)#Подтипизация на записях|подтипизация на записях]] и [[Полиморфизм (информатика)#Полиморфизм записей и вариантов|полиморфизм записей и вариантов]]). В ООП инкапсуляция тесно связана с принципом [[абстракция данных|абстракции данных]] (не путать с [[Абстрактный тип данных|абстрактными типами данных]], реализации которых предоставляют возможность инкапсуляции, но имеют иную природу). Это, в частности, приводит к другому распространённому заблуждению — рассмотрению инкапсуляции неотрывно от [[Сокрытие (программирование)|сокрытия]]. В частности, в сообществе [[С++]] или [[Java]] принято рассматривать инкапсуляцию без сокрытия как неполноценную. Однако, некоторые языки (например, [[Smalltalk]], [[Python]]) реализуют инкапсуляцию в полной мере, но не предусматривают возможности скрытия в принципе. Другие ([[Standard ML]], [[OCaml]]) жёстко разделяют эти понятия как ортогональные и предоставляют их в семантически различном в виде (см. [[язык модулей ML#Опечатывание|сокрытие в языке модулей ML]]).
 
== Подробности ==