Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс.
Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).
Предостережение: Одна из наиболее распространенных ошибок — делать сокрытие реализации только ради сокрытия. Целями, достойными усилий, являются:
· предельная локализация изменений при необходимости таких изменений,
- прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.
В языке С++ объекты описывают с помощью классов.
Класс представляет собой совокупность данных, описывающих какие-то объекты, и функций, управляющих этими объектами.
Общая схема описания класса:
class Имя_класса
{
тело класса (описание данных и функций)
};
Тело класса обычно состоит из разделов, имеющих различные уровни доступа к своим элементам. Каждый раздел имеет свою метку:
Ø private - закрытые (частные) элементы;
Ø protected - защищенные элементы;
Ø public - открытые (общие) элементы.
Если для первого раздела уровень доступа не указан, то по умолчанию этот раздел имеет уровень доступа private.
Элементы данных класса объявляются точно так же как обычные переменные, за исключением только того, что они не могут быть явно инициализированы. Как правило, элементы данных закрывают от прямого доступа.
Короткие функции, не содержащие циклов, можно определить внутри описания класса, компилятор, по возможности, сделает их встраиваемыми (inline). Определение более сложных функций выносят из тела класса, тогда определение функции выглядит так:
Тип Имя_класса:: имя_функции (параметры)
{
тело функции
}
После того как класс определен, можно объявить объекты, используя имя класса как имя типа.
Описание объекта:
Имя_класа имя_объекта;
Доступ к элементам класса осуществляется с помощью операции «точка»: