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

Вони обидва є абстракцією та інкапсуляцією - основні концепції об'єктно-орієнтованого програмування (OOP), які дозволяють реалізувати реальні об'єкти в коді та програмі. Вони дуже різні, оскільки вони обидва йдуть рука об руку. Хоча вони обоє технічно нероздільні, вони не мають нічого спільного буквально. Майже вся інкапсуляція - це абстракція, оскільки вони обидва щось маскують, але мають неабияку частку відмінностей.

Що таке абстракція?

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

Візьмемо приклад

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

Що таке інкапсуляція?

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

Візьмемо приклад

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

Порівняння голова до голови між абстракцією та інкапсуляцією (Інфографіка)

Нижче наведено верхню різницю між абстракцією та інкапсуляцією

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

Давайте обговоримо деякі основні відмінності між абстракцією та інкапсуляцією:

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

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

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

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

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

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

Абстракція

Інкапсуляція

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

Висновок

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

Рекомендовані статті

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

  1. Що таке C ++
  2. CSS проти JavaScript
  3. C проти Python
  4. Керівництво по інкапсуляції в PHP