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

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

Что такое абстракция?

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

Давайте возьмем пример

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

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

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

Давайте возьмем пример

Только вам нужно знать поведение устройства, не беспокоясь о реализации таких деталей, как то, какие сенсоры у клавиатуры, беспроводная она или нет и т. Д. Каждая деталь описывает мышь, но это просто клавиатура, независимо от деталей. У вас просто есть интерфейс клавиатуры, который является указателем мыши в этой ситуации, и это мы назвали Инкапсуляция

Сравнение лицом к лицу между абстракцией и инкапсуляцией (инфографика)

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

Ключевые различия между абстракцией и инкапсуляцией

Давайте обсудим некоторые основные различия между абстракцией и инкапсуляцией:

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

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

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

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

Сравнительная таблица абстракции против инкапсуляции

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

абстракция

Инкапсуляция

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

Вывод

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

Рекомендуемые статьи

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

  1. Что такое C ++
  2. CSS против JavaScript
  3. C против Python
  4. Руководство по инкапсуляции в PHP