Різниця між абстракцією та інкапсуляцією

Ключові відмінності між абстракцією та інкапсуляцією

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

Визначення абстракції

Абстракція — це концепція ООП, яка зосереджується лише на релевантних даних об’єкта. Він приховує фонові деталі та підкреслює важливі точки даних для зменшення складності та підвищення ефективності. Зазвичай він зберігає лише інформацію, яка є найбільш актуальною для цього конкретного процесу. Абстракція Метод головним чином зосереджується на ідеї, а не на фактичному функціонуванні.

Визначення інкапсуляції

Інкапсуляція — це метод полегшення роботи зі складною системою для кінцевих користувачів. Користувачеві не потрібно турбуватися про внутрішні деталі та складності системи. Інкапсуляція це процес обгортання даних і коду, які працюють з даними, в одну сутність. Ви можете вважати це захисною оболонкою, яка зупиняє довільний доступ коду, визначеного поза цією оболонкою.

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

Різниця між абстракцією та інкапсуляцією

Ось головна відмінність між абстракцією та інкапсуляцією:

Параметр Абстракція Інкапсуляція
Використовувати для Абстракція вирішує проблеми та питання, які виникають на етапі проектування. Інкапсуляція вирішує проблеми та проблеми, які виникають на етапі впровадження.
Сфокусувати Абстракція дозволяє зосередитися на тому, що робить об’єкт, а не на тому, як він це робить Інкапсуляція дозволяє приховати код і дані в єдиний блок, щоб захистити дані від зовнішнього світу.
Реалізація Ви можете використовувати абстракцію за допомогою інтерфейсу та абстрактного класу. Ви можете реалізувати інкапсуляцію за допомогою модифікаторів доступу (публічний, захищений і приватний).
Фокуси Зосередьтеся головним чином на тому, що потрібно зробити. Зосередьтеся насамперед на тому, як це має бути зроблено.
додаток На рівні проектування. Під час рівня впровадження.

Навіщо потрібна абстракція?

Ось основні причини, чому абстракція потрібна для об’єктно-орієнтованого програмування:

  • Допомагає спростити представлення моделей домену.
  • Абстракція приховує нерелевантні деталі, знайдені в коді.
  • Абстракція допомагає вам розділити програму на багато незалежних понять.
  • Пропонує найбільшу гнучкість під час використання об’єктів ADT (абстрактного типу даних) у різних ситуаціях

Навіщо потрібна інкапсуляція?

Основними перевагами інкапсуляції є

  • Це покращує підтримку програми.
  • Пропонує користувачеві гнучкість для дуже легкого використання системи
  • Допомагає розробникам краще організувати код
  • Полегшує загальний процес кодування, оскільки вас цікавить лише те, що робить інший клас, а не те, як він це робить
  • Цей метод допомагає розробникам бути більш «об’єктивними» та орієнтованими на результат.
  • Інкапсульований код досить гнучкий і легко змінюється відповідно до нових вимог.
  • Інкапсуляція полегшує модульне тестування.
  • Це дозволяє зменшити зчеплення модулів і підвищує згуртованість всередині модуля, оскільки всі частини однієї речі інкапсульовані в одному місці.
  • Інкапсуляція допомагає вам змінити частину коду, не впливаючи на інші частини коду.
  • Покращує читабельність коду програми
  • Покращена безпека та полегшує обслуговування програми
  • Інтерфейс інкапсуляції дозволяє лише чітко визначену взаємодію.

Приклад абстракції

Припустімо, ви хочете створити банківську програму, і вас просять зібрати всю інформацію про вашого клієнта. Є ймовірність, що ви отримаєте наступну інформацію про клієнта.

Приклад абстракції в ООП
Приклад абстракції в ООП

Але не вся наведена вище інформація потрібна для створення банківської програми.

Отже, вам потрібно вибрати лише корисну інформацію для вашої банківської програми з цього пулу. Такі дані, як ім’я, адреса, податкова інформація тощо, мають сенс для банківської програми.

Приклад абстракції в ООП
Приклад абстракції в ООП

Оскільки ми отримали/видалили/вибрали інформацію про клієнта з більшого пулу, цей процес називається абстракцією.

Однак одну й ту саму інформацію, отриману після вилучення, можна використовувати для широкого спектру застосувань. Наприклад, ви можете використовувати ті самі дані для заявки на лікарняний, програми порталу вакансій, державної бази даних тощо з невеликими змінами або без них. Таким чином, вони стають вашими основними даними. Це перевага абстракції.

Приклад інкапсуляції

Розглянемо приклад мобільного пристрою. За допомогою мобільних пристроїв ви можете виконувати різноманітні функції, такі як фотографування, надсилання повідомлень, запис відео/аудіо, доступ до Інтернету та багато іншого.

Зазначені вище функції є функціями більшості смартфонів. Однак вам не потрібно розуміти внутрішні деталі функціонування цих функцій перед використанням цієї програми. Наприклад, вам не потрібно знати, як ваша камера обчислює гамма-корекцію чи ідентифікує людське обличчя на зображенні. Вам просто потрібно вивчити інтерфейс програми. Це інкапсуляція.