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

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