Что означает слово инкапсуляция
Инкапсуляция
Словарь иностранных слов.- 11-е изд., стереотип.- М.:Рус.яз., 1984.-608 с.
Список значений слова или словосочетания со ссылками на соответствующие статьи. Если вы попали сюда из другой статьи Википедии, пожалуйста, вернитесь и уточните ссылку так, чтобы она указывала на статью. |
Полезное
Смотреть что такое «Инкапсуляция» в других словарях:
ИНКАПСУЛЯЦИЯ — (лат.). Изменение одних слов в другие, в американских языках. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. инкапсуляция (лат. in в) образование капсулы 1 вокруг чуждых для организма веществ (инородных тел,… … Словарь иностранных слов русского языка
Инкапсуляция — в объектно ориентированном программировании сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен только интерфейс объекта, через который осуществляется все взаимодействие с ним. По… … Финансовый словарь
инкапсуляция — инкапсулирование Словарь русских синонимов. инкапсуляция сущ., кол во синонимов: 1 • инкапсулирование (1) Словарь синонимов ASIS … Словарь синонимов
инкапсуляция «IP в IP» — Для инкапсуляции в дейтаграмму IP используется инкапсуляция IP в IP (IP in IP), для этого перед существующим заголовком IP дейтаграммы вставляется внешний заголовок IP (МСЭ Т Y.1281). [http://www.iks media.ru/glossary/index.html?glossid=2400324]… … Справочник технического переводчика
ИНКАПСУЛЯЦИЯ — (от лат capsula ящик, капсула, сумка), осумкование, термин, употребляющийся для обозначения разрастания соединительнотканной капсулы, сумки вокруг тех или иных пат. образований, паразитов и пр. тел, не подвергающихся почему либо рассасыванию в… … Большая медицинская энциклопедия
инкапсуляция — скрытие включение вбирание Термин объектно ориентированного программирования, означающий структурирование программы на модули особого вида, называемые классами и объединяющие данные и процедуры их обработки, причем внутренние данные класса не… … Справочник технического переводчика
инкапсуляция — (incapsulatio; ин + лат. capsula ящичек, оболочка) процесс отграничения очага воспаления или инородного тела путем образования вокруг него фиброзной оболочки (капсулы) … Большой медицинский словарь
инкапсуляция — инкапсуляция, инкапсуляции, инкапсуляции, инкапсуляций, инкапсуляции, инкапсуляциям, инкапсуляцию, инкапсуляции, инкапсуляцией, инкапсуляциею, инкапсуляциями, инкапсуляции, инкапсуляциях (Источник: «Полная акцентуированная парадигма по А. А.… … Формы слов
инкапсуляция — инкапсул яция, и … Русский орфографический словарь
ИНКАПСУЛЯЦИЯ — (от лат. in в, внутри и capsula коробочка, ящичек), разрастание соединительной ткани вокруг инородных тел или мёртвых масс, образующихся в органах и тканях при различных патологических процессах … Ветеринарный энциклопедический словарь
ИНКАПСУЛЯЦИЯ
Полезное
Смотреть что такое «ИНКАПСУЛЯЦИЯ» в других словарях:
Инкапсуляция — (лат. in в, capsula коробочка ; итал. incapsulare закупоривать) 1. Изоляция, закрытие чего либо мешающего, ненужного, вредного с целью исключения отрицательного влияния на окружающее. (Поместить радиоактивные отходы в капсулу, закрыть… … Википедия
Инкапсуляция — в объектно ориентированном программировании сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен только интерфейс объекта, через который осуществляется все взаимодействие с ним. По… … Финансовый словарь
инкапсуляция — инкапсулирование Словарь русских синонимов. инкапсуляция сущ., кол во синонимов: 1 • инкапсулирование (1) Словарь синонимов ASIS … Словарь синонимов
инкапсуляция «IP в IP» — Для инкапсуляции в дейтаграмму IP используется инкапсуляция IP в IP (IP in IP), для этого перед существующим заголовком IP дейтаграммы вставляется внешний заголовок IP (МСЭ Т Y.1281). [http://www.iks media.ru/glossary/index.html?glossid=2400324]… … Справочник технического переводчика
ИНКАПСУЛЯЦИЯ — (от лат capsula ящик, капсула, сумка), осумкование, термин, употребляющийся для обозначения разрастания соединительнотканной капсулы, сумки вокруг тех или иных пат. образований, паразитов и пр. тел, не подвергающихся почему либо рассасыванию в… … Большая медицинская энциклопедия
инкапсуляция — скрытие включение вбирание Термин объектно ориентированного программирования, означающий структурирование программы на модули особого вида, называемые классами и объединяющие данные и процедуры их обработки, причем внутренние данные класса не… … Справочник технического переводчика
инкапсуляция — (incapsulatio; ин + лат. capsula ящичек, оболочка) процесс отграничения очага воспаления или инородного тела путем образования вокруг него фиброзной оболочки (капсулы) … Большой медицинский словарь
инкапсуляция — инкапсуляция, инкапсуляции, инкапсуляции, инкапсуляций, инкапсуляции, инкапсуляциям, инкапсуляцию, инкапсуляции, инкапсуляцией, инкапсуляциею, инкапсуляциями, инкапсуляции, инкапсуляциях (Источник: «Полная акцентуированная парадигма по А. А.… … Формы слов
инкапсуляция — инкапсул яция, и … Русский орфографический словарь
ИНКАПСУЛЯЦИЯ — (от лат. in в, внутри и capsula коробочка, ящичек), разрастание соединительной ткани вокруг инородных тел или мёртвых масс, образующихся в органах и тканях при различных патологических процессах … Ветеринарный энциклопедический словарь
ООП. Часть 3. Модификаторы доступа, инкапсуляция
Классы, методы и поля не всегда могут постоять за себя. Рассказываем, как быть защитником в объектно-ориентированном программировании.
Инкапсуляция (от лат. in capsule — в оболочке) — это заключение данных и функционала в оболочку. В объектно-ориентированном программировании в роли оболочки выступают классы: они не только собирают переменные и методы в одном месте, но и защищают их от вмешательства извне (сокрытие).
Важно! Инкапсуляция не является сокрытием. Сокрытие — это часть инкапсуляции.
Это может быть достаточно сложной концепцией для понимания. Поэтому, чтобы быстрее разобраться, в этой статье мы рассмотрим инкапсуляцию на примере уровней доступа.
Все статьи про ООП
Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Модификатор доступа public
Первый уровень, с которым сталкиваются все разработчики, — публичный. Чтобы сказать компилятору, что что-то должно быть доступно для всех, используется ключевое слово public.
Рассмотрим на примере класса Item:
Объявив экземпляр этого класса, можно обращаться к любым его полям в любом месте программы, где доступен сам объект (речь о локальных и глобальных переменных).
Так как поля публичные, в консоли они отобразятся без каких-либо проблем:
Это удобно, потому что можно в любой момент выполнить любое действие над объектом и его данными. Но в этом и кроется проблема: объект становится беззащитен перед любым вмешательством. Например, можно просто взять и изменить его цену:
Из-за того, что поле публичное, оно изменится:
Это плохо по нескольким причинам:
Разумеется, это не лучшее, что может случиться с приложением.
Модификатор доступа private
Чтобы поля были защищены от вмешательства, используется ключевое слово private — оно делает члены класса доступными только внутри самого класса.
Теперь эти поля нельзя будет изменить нигде, кроме как в методах этого класса. Но и получить их значение извне тоже не получится, а попытка вывести приведёт к ошибке:
Есть два способа сделать поле доступным только для чтения. Первый — использовать ключевое слово readonly, но оно запрещает менять значение вообще.
Второй способ заключается в том, чтобы передавать значения приватного члена класса через публичный. Например, с помощью методов:
К такой практике прибегают Java-разработчики, но в C# есть более элегантный способ — свойства.
Теперь, чтобы получить данные, нужно обратиться к свойству, а не к полю:
Преимущество этого в том, что можно разрешить получать данные, но запретить их менять. То есть прописать только геттер:
Обратите внимание, что можно просто написать set; или get; если не требуется дополнительная логика. Это сработает, если у поля и свойства одинаковые имена и если это примитивный тип (int, float, char, double и другие). Со ссылочными типами (объекты и строки) это не работает.
Также можно менять логику работы со значением:
Здесь поле будет изменено только в том случае, если ему пытаются указать значение, которое выше нуля.
То есть если запустить вот такой код:
Также можно создавать свойства без поля:
Это свойство вернёт true, если цена выше 5000, и false, если ниже.
Ключевое слово private можно также применять и к методам. Это делает их доступными только внутри класса.
Также приватным можно сделать сам класс, если он находится внутри другого класса:
Модификатор доступа internal
Иногда нужно сделать компонент доступным только внутри одного файла — например, в Program.cs, Item.cs или любом другом. Для этого используется ключевое слово internal.
Класс Backpack можно будет использовать только внутри файла Program.cs, и попытка объявить его внутри другого файла приведёт к ошибке.
Ключевое слово static
Статичность относится не совсем к уровням доступа, но тоже помогает заключить реализацию функционала в оболочку класса. Статичность позволяет обращаться к методам или полям, не создавая объект.
Метод Sum () используется в классе Program, хотя экземпляр класса Calc не создавался. При этом можно сделать статичным как отдельный метод или свойство, так и весь класс. В этом случае все поля и методы тоже должны быть статичными.
Это может быть нужно, чтобы создать набор инструментов, который будет использоваться в других частях программы. Хороший пример — класс Console, который тоже является статичным.
Другой пример — класс Math. Его можно использовать, чтобы выполнять различные математические операции (получение квадратного корня, модуляция, получение синуса, косинуса и так далее). У него много методов, а также он хранит различные константы вроде числа пи.
Домашнее задание
Напишите класс GameObject, в котором будут храниться координаты объекта. Координаты должны быть доступны для чтения, а их изменение должно происходить в методе Move ().
Заключение
Есть и другие ключевые слова:
Они будут рассмотрены в статье о наследовании.
Большая часть курса «Профессия С#-разработчик» посвящена именно ООП —
не только теории, но и практике. Вы научитесь писать программы, подбирая нужные инструменты — от инкапсуляции до полиморфизма. К концу курса у вас будет портфолио из нескольких проектов, а также все знания и навыки, которые нужны для получения первой работы.
Инкапсуляция в Си++ и Си
Определение
Инкапсуляция это набор инструментов для управления доступом к данным или методам которые управляют этими данными. С детальным определением термина “инкапсуляция” можно ознакомиться в моей предыдущей публикации на Хабре по этой ссылке. Эта статья сфокусирована на примерах инкапсуляции в Си++ и Си.
Инкапсуляция в Си++
По умолчанию, в классе ( class ) данные и методы приватные ( private ); они могут быть прочитаны и изменены только классом к которому принадлежат. Уровень доступа может быть изменен при помощи соответствующих ключевых слов которые предоставляет Си++.
В Си++ доступно несколько спецификаторов, и они изменяют доступ к данным следующим образом:
Для краткости, только два уровня (приватный и публичный) будут освещены в примерах.
Пример инкапсуляции
Попытка напечатать или изменить приватную переменную mobile_number из основной программы ( main ) вызовет ошибку при компиляции потому как доступ к приватным данным в классе ограничен.
Нарушение инкапсуляции с Друзьями (Хорошая практика)
В Си++ присутствует ключевое слово “друг” ( friend ) которое позволяет добавить исключения в общие правила доступа к данным. Если функция или класс названы другом ( friend ) класса Contact — они получают свободный доступ к защищенным или приватным данным.
Существует два основных правила дружбы — дружба не наследуется и не взаимна. Также, наличие “друзей” не изменяет уровень защищенности данных — приватные данные остаются приватными с исключением в виде “друга”.
Примечание: друзьями лучше не злоупотреблять. Добавление друга стоит рассматривать как исключение, не как общую практику.
Нарушение инкапсуляции с Преобразованием типов и Указателями (Плохая практика)
Прежде всего, стоит заметить что использовать указатели и преобразование типов таким способом — плохая идея. Этот способ не гарантирует получения нужных данных. Он плохо читается и плохо поддерживается. Невзирая на это, он существует.
Си++ получил в наследство от Си множество инструментов, один из которых — преобразование типов ( typecasting ). По умолчанию, все переменные и методы в классе приватные. В то же время, стандартный уровень доступа к данным в структуре ( struct ) — публичный. Возможно создать структуру или полностью публичный класс в котором данные будут расположены идентично данным в классе Contact и используя преобразование типов получить доступ к приватным данным.
Приватные данные были прочитаны и изменены благодаря преобразованию типов
Инкапсуляция в Си
Традиционно считается что инкапсуляция — один из ключевых ООП принципов. Тем не менее, это не лимитирует использование этого принципа в процедурно-ориентированных языках. В Си, инкапсуляция используется давно, невзирая на отсутствие ключевых слов “приватный” и “публичный”.
Приватные переменные
В данном примере, структура была определена в отдельном исходном файле “private_var.c”. Поскольку инициализация структуры в Си требует выделения и освобождения памяти, несколько вспомогательных функций были добавлены.
В соответствующем заголовочном файле «private_var.h», структура Contact была объявлена, но ее содержание осталось скрытым для основной программы.
Таким образом, для “main.c” содержание структуры неизвестно и попытки прочитать или изменить приватные данные вызовут ошибку при компиляции.
Получение доступа к приватным переменным с Указателями
Преобразование типов может быть использовано для преодоления инкапсуляции в Си также как и в Си++, но данный подход уже был описан. Зная, что в структуре данные расположены в порядке их декларации, указатели и арифметика указателей подойдет для достижения цели.
Доступ к переменным в структуре ограничен. Тем не менее, спрятаны только переменные, не память в которой хранятся данные. Указатели можно рассматривать как ссылку на адрес памяти, и если эта память доступна программе — данные сохраненные в этой памяти можно прочитать и изменить. Если указатель назначен на память в которой структура хранит свои данные — их можно прочитать. Используя то же определение структуры (те же “.c” и “.h” файлы) и модифицированный “main.c” файл, ограничение доступа было преодолено.
Данные в структуре были прочитаны и модифицированы
Приватные функции
Функции, будучи внешними ( extern ) по умолчанию, видимы во всей так называемой единице трансляции ( translation unit ). Другими словами, если несколько файлов скомпилированы вместе в один объектный файл, любой из этих файлов сможет получить доступ к любой функции из любого другого файла. Использование ключевого слова “статический” ( static ) при создании функции ограничит ее видимость до файла в котором она была определена.Следовательно, для обеспечения приватности функции необходимо выполнить несколько шагов:
В соответствующем заголовочном файле «private_funct.h», print_numbers() была декларирована как статическая функция.
Получение доступа к приватным функциям
Вызвать функцию print_numbers() из основной программы возможно. Для этого можно использовать ключевое слово goto или передавать в main указатель на приватную функцию. Оба способа требуют изменений либо в исходном файле “private_funct.c”, либо непосредственно в теле самой функции. Поскольку эти методы не обходят инкапсуляцию а отменяют её, они выходят за рамки этой статьи.
Заключение
Инкапсуляция существует за пределами ООП языков. Современные ООП языки делают использование инкапсуляции удобным и естественным. Существует множество способов обойти инкапсуляцию и избежание сомнительных практик поможет ее сохранить как в Си, так и в Си++.
Инкапсуляция
Смотреть что такое «Инкапсуляция» в других словарях:
Инкапсуляция — (лат. in в, capsula коробочка ; итал. incapsulare закупоривать) 1. Изоляция, закрытие чего либо мешающего, ненужного, вредного с целью исключения отрицательного влияния на окружающее. (Поместить радиоактивные отходы в капсулу, закрыть… … Википедия
ИНКАПСУЛЯЦИЯ — (лат.). Изменение одних слов в другие, в американских языках. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. инкапсуляция (лат. in в) образование капсулы 1 вокруг чуждых для организма веществ (инородных тел,… … Словарь иностранных слов русского языка
Инкапсуляция — в объектно ориентированном программировании сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен только интерфейс объекта, через который осуществляется все взаимодействие с ним. По… … Финансовый словарь
инкапсуляция — инкапсулирование Словарь русских синонимов. инкапсуляция сущ., кол во синонимов: 1 • инкапсулирование (1) Словарь синонимов ASIS … Словарь синонимов
инкапсуляция «IP в IP» — Для инкапсуляции в дейтаграмму IP используется инкапсуляция IP в IP (IP in IP), для этого перед существующим заголовком IP дейтаграммы вставляется внешний заголовок IP (МСЭ Т Y.1281). [http://www.iks media.ru/glossary/index.html?glossid=2400324]… … Справочник технического переводчика
ИНКАПСУЛЯЦИЯ — (от лат capsula ящик, капсула, сумка), осумкование, термин, употребляющийся для обозначения разрастания соединительнотканной капсулы, сумки вокруг тех или иных пат. образований, паразитов и пр. тел, не подвергающихся почему либо рассасыванию в… … Большая медицинская энциклопедия
инкапсуляция — скрытие включение вбирание Термин объектно ориентированного программирования, означающий структурирование программы на модули особого вида, называемые классами и объединяющие данные и процедуры их обработки, причем внутренние данные класса не… … Справочник технического переводчика
инкапсуляция — (incapsulatio; ин + лат. capsula ящичек, оболочка) процесс отграничения очага воспаления или инородного тела путем образования вокруг него фиброзной оболочки (капсулы) … Большой медицинский словарь
инкапсуляция — инкапсуляция, инкапсуляции, инкапсуляции, инкапсуляций, инкапсуляции, инкапсуляциям, инкапсуляцию, инкапсуляции, инкапсуляцией, инкапсуляциею, инкапсуляциями, инкапсуляции, инкапсуляциях (Источник: «Полная акцентуированная парадигма по А. А.… … Формы слов
инкапсуляция — инкапсул яция, и … Русский орфографический словарь
ИНКАПСУЛЯЦИЯ — (от лат. in в, внутри и capsula коробочка, ящичек), разрастание соединительной ткани вокруг инородных тел или мёртвых масс, образующихся в органах и тканях при различных патологических процессах … Ветеринарный энциклопедический словарь