Инкапсуляция в С++

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

А в этой статье мы обсудим еще одну важную особенность ООП, т.е. инкапсуляцию. Абстракция и инкапсуляция идут рука об руку. Фактически можно сказать, что инкапсулированный код помогает нам в абстракции. В общем, инкапсуляция и абстракция тесно связаны друг с другом. А это значит, что мы можем обсудить эти две концепции вместе, поскольку между инкапсуляцией и абстракцией находится очень тонкая грань.

Что такое инкапсуляция?

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

Это важная концепция объектно-ориентированного программирования, которая ведет к еще одной концепции ООП, известной как «скрытие данных». Инкапсуляция скрывает данные и их элементы, тогда как абстракция предоставляет пользователю только необходимые детали или интерфейсы.

В некотором смысле абстракция представляет «абстрактный взгляд» на скрытые данные для пользователя.

Схема абстракции

Класс в C++ — это тот класс, в котором мы объединяем элементы данных, а функции, работающие с этими элементами данных, вместе со спецификаторами доступа, такими как private, public и protected, представляют собой инкапсуляцию. Мы уже обсуждали спецификаторы доступа в нашей предыдущей статье по классам и объектам.

Читать также:  Использование массивов с функциями в C++

Вы также должны знать, что по умолчанию, члены класса являются закрытыми. Когда мы объявляем члены класса как частные, а методы для доступа к членам класса как общедоступные, мы действительно реализуем инкапсуляцию. В то же время мы предоставляем пользователю абстрактное представление данных в виде публичных методов.

Реализация инкапсуляции

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

Однако мы не можем получить прямой доступ к закрытым членам, и это называется сокрытием данных. Когда это сделано, данные защищены и могут быть доступны только для функций того конкретного класса, в котором данные объявлены.

Вот пример программы:

Вывод данных:

num = 100
ch = Z

В приведенной выше программе мы объединили две переменные-члены вместе с методами получения и установки в класс. Это правильный пример инкапсуляции.

Читать также:  Полный Обзор C++

Мы объявили две переменные, т.е. num и ch, как частные переменные, чтобы они были недоступны для пользователя. Они доступны только для функций, которые мы объявили общедоступными. Таким образом, у нас есть скрытые элементы данных в качестве частных переменных в классе.

Давайте рассмотрим еще один пример для лучшего понимания инкапсуляции в C++:

Вывод данных:

Enter basic for the employee1:10000
allowances:4324.43
deductions:1000
Employee: 1
Salary: 13324.4

Это еще один пример инкапсуляции. Как показано выше, у нас есть класс Accounts, который объединяет данные аккаунта и все функции, работающие с этими данными, в один класс Accounts. В основной функции мы можем создать объект этого класса и получить доступ к функциям для получения нужной информации.

Теперь, если некоторые другие классы говорят, что сведения о сотруднике хотят получить доступ к данным учетных записей, то они не могут сделать это напрямую. Им нужно будет создать объект класса Accounts и тогда, они смогут получить доступ только к тем элементам, которые являются общедоступными. Таким образом, используя инкапсуляцию, мы гарантируем контроль доступа к данным, а также обеспечиваем целостность данных.

Читать также:  Квалификаторы типов и классов хранения в C++

Разница между инкапсуляцией и абстракцией

Абстракция и инкапсуляция тесно связаны друг с другом. Инкапсуляция помогает абстракции, объединяя данные и методы, работающие с этими данными, вместе.

Инкапсуляция Абстракция
Скрывает данные Скрывает реализацию
Объединяет данные и методы вместе Предоставляет пользователю абстрактный интерфейс, предоставляющий только то, что требуется
Помощь абстракции Помогает в повторном использовании и безопасности кода
Реализована как класс со спецификаторами доступа, определяющими доступ к элементам данных и методам. Реализована как абстрактный класс и интерфейсы, которые не могут быть созданы.

Итог

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

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

В нашей следующей статье мы обсудим важность наследования в С++ с соответствующими примерами.

С Уважением, МониторБанк

Добавить комментарий