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

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

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

Определение абстракции

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

Определение инкапсуляции

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

Абстракция против инкапсуляции
Абстракция против инкапсуляции

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

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

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

Зачем вам Абстракция?

Вот основные причины, по которым абстракция необходима для объектно-ориентированного программирования:

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

Зачем вам нужна инкапсуляция?

Основными преимуществами инкапсуляции являются

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

Пример абстракции

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

Пример абстракции в ООП
Пример абстракции в ООП

Но не вся вышеуказанная информация необходима для создания банковского приложения.

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

Пример абстракции в ООП
Пример абстракции в ООП

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

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

Пример инкапсуляции

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

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