Что скрывают данные в C++? Объяснение абстракции и инкапсуляции

Опубликовано: 2021-05-24

Оглавление

Введение в сокрытие данных

Данные являются наиболее чувствительным и изменчивым компонентом программы, манипулирование которым может привести к неправильному выводу и нарушению целостности данных. Вот где сокрытие данных оказывается важным. На техническом жаргоне сокрытие данных, также называемое сокрытием информации, является неотъемлемым механизмом объектно-ориентированного программирования (ООП), позволяющим скрыть внутренние детали объекта от конечного пользователя.

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

Проще говоря, сокрытие данных берет определенные части кода программы и экранирует их от членов объекта. Если член объекта пытается получить доступ к скрытым данным, программа вернет ошибку. Это предупредительный механизм, введенный для того, чтобы программист воздерживался от подключения к ошибочным данным, которые были скрыты. Часто скрыты внутренние компоненты, в которых нет предсказуемой потребности со стороны пользователя.

Сокрытие данных, абстракция данных и инкапсуляция данных

Сокрытие данных в C++ тесно связано с двумя другими свойствами ООП — абстракцией и инкапсуляцией.

Абстракция данных

Абстракция данных — это механизм, позволяющий предоставить конечному пользователю только соответствующий программный интерфейс и скрыть более сложные и сложные детали реализации. Давайте рассмотрим пример из реальной жизни для лучшего понимания. Рассмотрите свой телевизор. Вы можете включать и выключать телевизор, переключать каналы, регулировать громкость и добавлять внешние компоненты, такие как видеомагнитофоны, DVD-плееры и динамики. Но вы не знаете внутренних механизмов телевидения.

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

Инкапсуляция данных

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

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

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

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

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

  1. Основное различие между сокрытием данных и инкапсуляцией заключается в том, что первое направлено на повышение безопасности данных в программе, а второе — на сокрытие сложности программы.
  2. Сокрытие данных концентрируется на доступности члена объекта в классе, в то время как инкапсуляция данных фокусируется на том, как осуществляется доступ к данным и как ведут себя различные объекты. Инкапсуляция в основном достигается за счет сокрытия информации, а не только сокрытия информации. Это означает, что программист скрывает структуры члена объекта и скрывает реализацию всех его методов.
  3. В то время как сокрытие данных направлено на ограничение использования данных в программе для обеспечения безопасности данных, инкапсуляция данных фокусируется на обертывании (или инкапсуляции) сложных данных, чтобы предоставить пользователю более простое представление.
  4. При сокрытии данных данные должны быть определены только как частные. При инкапсуляции данных данные могут быть общедоступными или частными.
  5. Сокрытие данных само по себе является как процессом, так и методом, тогда как инкапсуляция данных является подпроцессом сокрытия данных.

Спецификаторы доступа

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

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

Частные переменные/функции: могут быть доступны только членам, определенным как часть класса.

Публичные переменные/функции: к ним можно получить доступ из любой точки программы.

Защищенные переменные/функции являются частными внутри класса и доступны для удаленного доступа только в производном классе.

Применение сокрытия данных

Чтобы лучше понять сокрытие данных, давайте рассмотрим следующий пример. Учитывая, что вы программист, предположим, что вы объявили класс с именем «CheckAccount», в котором вы определили элемент данных с помощью термина «Баланс», который относится к балансу банковского счета пользователя.

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

  1. Сокрытие данных обычно выполняется для данных, которые являются непредсказуемыми и деликатными. Такие данные необходимы для эффективного и быстрого запуска программы. Из-за несанкционированного доступа результирующие данные изменения данных являются постоянными и требуют полной переработки со стороны программиста перед дальнейшим использованием.
  2. Сокрытие данных помогает защитить членов класса от непреднамеренного пропуска. Класс обычно включает в себя различные связанные поля, которые должны находиться в надежном состоянии. Предположим, что программисту разрешено напрямую управлять любым из этих полей. В этом случае есть вероятность, что вы можете преобразовать одну область без изменения важных связанных полей, оставив ваш класс в конфликтном состоянии.

Преимущества сокрытия данных

Преимущества сокрытия данных многочисленны:

  1. Он используется для уменьшения непредсказуемости и сложности данных.
  2. Это улучшает повторное использование программы.
  3. Ограничение взаимозависимостей между программными компонентами также снижает сложность системы для повышения надежности.
  4. Скрывает структуру физического хранения данных. Это помогает четко определить интерфейс, улучшает читабельность и понятность.
  5. Он обеспечивает защиту данных от повреждения и несанкционированного доступа. Другими словами, это помогает скрыть важные данные, тем самым обеспечивая протоколы повышенной безопасности от хакеров. Если бы все внутренние данные были обнародованы, хакеры могли бы легко проникнуть во внутренние данные и внести злонамеренные изменения, чтобы изменить работу программы. Сокрытие данных значительно усложняет взлом кода, потому что скрытые данные будут казаться невидимыми для внешних членов класса и, следовательно, для хакера.
  6. Инкапсулированные классы просты, просты в управлении и облегчают будущую разработку приложения.

Недостаток сокрытия данных

Единственным недостатком сокрытия данных является дополнительное кодирование. Сокрытие данных требует от программистов написания более длинных кодов для создания желаемого эффекта в скрытых данных.

Изучайте онлайн -курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Заключение

Сокрытие данных сродни игре в русскую рулетку. В русской рулетке только в одном из шести отверстий есть пуля. Давайте представим, что выстрел представляет собой ощутимую угрозу данным. Готовы ли вы рискнуть? Может существовать пять сценариев, которые работают в вашу пользу, но можете ли вы конкретно определить угрозу? Ответ - нет. Все сценарии несут одинаковую вероятностную нагрузку подозрительности и страха. Вместо того, чтобы поддаваться этой неопределенности, боритесь с угрозами, связанными с данными. Работайте под прикрытием, скрывая данные.

Если вам интересно узнать больше о Java, ООП и разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов интенсивного обучения. Более 9 проектов и заданий, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое инкапсуляция в объектно-ориентированном программировании?

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

Что такое абстракция в объектно-ориентированном программировании?

Абстракция — это метод, используемый в объектно-ориентированном программировании для отделения интерфейсов классов от деталей реализации каждого отдельного объекта. Это означает, что код можно изменить, не изменяя код, использующий класс. В объектно-ориентированном программировании (ООП) абстракция представляет собой объект, которым можно манипулировать, но который не определен явно. Абстракция — важная часть ООП; это процесс отделения интерфейса класса от реализации его методов.

Как классы и объекты взаимодействуют в объектно-ориентированном программировании?

Классы и объекты являются основой объектно-ориентированного (ОО) программирования. Объектно-ориентированное программирование — это парадигма программирования, которая использует объекты и классы для моделирования реального мира. Класс — это проект или шаблон. Это описание или спецификация того, каким должен быть объект. Он определяет характеристики, поведение и данные объекта определенного типа. Объекты являются экземплярами или примерами класса. Каждый объект в программе может быть отнесен к одному или нескольким классам. Класс может наследовать свойства, методы и другие характеристики другого класса. Это называется наследованием.