user

Авторизация

Добро пожаловать!

Регистрация

Undefined666

Кодинг

ООП. Инкапсуляция в C++

 Инкапсуляция в C++ определяется как объединение данных и информации в единое целое. В объектно-ориентированном программировании инкапсуляция определяется как связывание вместе данных и функций, которые ими управляют.

 Рассмотрим реальный пример инкапсуляции: в компании есть разные разделы, такие как раздел счетов, финансовый раздел, отдел продаж и т. д. Теперь,

  • Финансовый раздел обрабатывает все финансовые транзакции и ведет учет всех данных, связанных с финансами.
  • Точно так же отдел продаж обрабатывает все действия, связанные с продажами, и ведет учет всех продаж.

 Сейчас может возникнуть ситуация, когда чиновнику из финансового отдела по каким-то причинам нужны все данные о продажах в конкретном месяце.

 В этом случае ему не разрешается прямой доступ к данным отдела продаж. Сначала ему придется связаться с другим сотрудником отдела продаж, а затем попросить его предоставить конкретные данные.

 Вот что такое инкапсуляция. Здесь данные отдела продаж и сотрудников, которые могут ими манипулировать, объединены одним названием «отдел продаж». 

 Два важных свойства инкапсуляции 

  1. Защита данных: инкапсуляция защищает внутреннее состояние объекта, сохраняя конфиденциальность его элементов данных. Доступ к этим элементам данных и их изменение ограничены общедоступными методами класса, что обеспечивает контролируемое и безопасное манипулирование данными.
  2. Скрытие информации: инкапсуляция скрывает детали внутренней реализации класса от внешнего кода. Доступен только общедоступный интерфейс класса, что обеспечивает абстракцию и упрощает использование класса, позволяя изменять внутреннюю реализацию без воздействия на внешний код.

 Например, если мы даем ввод, а вывод должен составлять половину ввода

Особенности инкапсуляции

 Ниже приведены особенности инкапсуляции:

  1. Мы не можем получить доступ к какой-либо функции из класса напрямую. Нам нужен объект для доступа к этой функции, которая использует переменные-члены этого класса. 
  2. Функция, которую мы делаем внутри класса, должна использовать только переменные-члены, только тогда она называется инкапсуляцией .
  3. Если мы не создаем функцию внутри класса, которая использует переменную-член класса, мы не называем это инкапсуляцией.
  4. Повышение безопасности данных
  5. Это помогает контролировать модификацию наших элементов данных.

 Инкапсуляция также приводит к абстракции данных. Использование инкапсуляции также скрывает данные, как в приведенном выше примере, данные таких разделов, как продажи, финансы или счета, скрыты от любого другого раздела.

Простой пример С++:

 Вывод

 В C++ инкапсуляция может быть реализована с помощью классов и модификаторов доступа .

Пример:

 Вывод:

 Объяснение: В приведенной выше программе переменная x сделана закрытой. К этой переменной можно получить доступ и управлять ею только с помощью функций get() и set(), которые присутствуют внутри класса. Таким образом, мы можем сказать, что здесь переменная x и функции get() и set() связаны вместе, что является ничем иным, как инкапсуляцией.

 Вывод:

Роль спецификаторов доступа в инкапсуляции

 Спецификаторы доступа облегчают сокрытие данных в программах на C++, ограничивая доступ к функциям-членам класса и членам-данным. В C++ существует три типа спецификаторов доступа:

  • Частный
  • Защищено
  • Общественный

 По умолчанию все данные-члены и функции-члены класса делаются компилятором закрытыми.

Вопросы для рассмотрения

 Как мы видели в приведенном выше примере, спецификаторы доступа играют важную роль в реализации инкапсуляции в C++. Процесс реализации инкапсуляции можно разделить на два этапа:

  1. Создание класса для инкапсуляции всех данных и методов в единое целое.
  2. Скрытие соответствующих данных с помощью спецификаторов доступа.