Інкапсуляція проти абстракції
Інкапсуляція та абстракція - це дві різні, але пов'язані між собою, концепції, знайдені в OOP (Об'єктно-орієнтоване програмування) мовами. Інкапсуляція - це концепція поєднання даних і поведінки разом як єдине ціле. З іншого боку, абстракція - це процес представлення того, як суб'єкт господарювання поводиться \ виглядає на відміну від способу його реалізації.
Що таке інкапсуляція?
Інкапсуляція - це процес упаковки даних і операцій, які працюють над ними в одне ціле. Це по суті означає, що для доступу до даних слід використовувати певні заздалегідь визначені методи. Іншими словами, капсульовані дані не доступні безпосередньо. Це гарантує збереження цілісності даних, оскільки користувач не може безпосередньо отримати доступ до них та змінити їх за своїм бажанням. Користувачі отримуватимуть або встановлюватимуть значення даних лише методами, які є загальнодоступними для користувачів. Зазвичай ці методи забезпечують перевірку даних, щоб до полів було дозволено вставляти лише дані у відповідному форматі. Тому переваги інкапсуляції триразові. За допомогою інкапсуляції програміст може робити поля класу лише для читання чи запису. По-друге, клас може мати повний контроль над тим, що зберігається в його полях. Нарешті, користувачам класу не потрібно хвилюватися, як зберігаються його дані. У Java програміст може оголосити всі змінні екземпляри приватними та надати методи отримання та встановлення (які є загальнодоступними) для доступу та зміни приватних полів.
Що таке абстракція?
Абстракція - це процес відокремлення деталей презентації від деталей реалізації. Це робиться для того, щоб розробник звільнився від більш складних деталей реалізації. Натомість програміст може зосередитись на презентації або на поведінкових деталях суб'єкта. Простіше кажучи, абстракція фокусується на тому, як певна сутність може бути використана, а не як вона реалізується. Абстракція по суті приховує деталі реалізації, так що навіть якщо методологія реалізації з часом змінюється, програмісту не доведеться хвилюватися, як це вплине на його програму. Система може бути абстрагована в декілька шарів або рівнів. Наприклад, шари абстракції низького рівня розкриють деталі апаратних засобів, а абстракції високого рівня лише розкривають бізнес-логіку суб'єкта. Термін абстракція може використовуватися для позначення як сутності, так і процесу, і це призводить до певної плутанини. Як процес, абстракція означає вилучення істотних деталей при ігноруванні несуттєвих деталей предмета або групи предметів, тоді як абстракція означає модель або вигляд суб'єкта, що містить лише суттєві деталі. У Java програміст може використовувати ключове слово абстракт, щоб оголосити клас абстрактним об'єктом, що представляє суттєві визначаючі характеристики реального світу.
Яка різниця між інкапсуляцією та абстракцією?
Незважаючи на те, що інкапсуляція та абстракція є дуже спорідненими поняттями, знайденими в об'єктно-орієнтованих мовах програмування, вони мають ключові відмінності. Абстракція - це техніка, яка допомагає нам визначити, що має бути видно, а що слід приховувати. Інкапсуляція - це прийоми упаковки інформації таким чином, щоб вона стала видимою, що має бути видно, і приховує те, що має бути прихованим. Іншими словами, інкапсуляція може бути визначена як один крок поза абстракцією. Хоча абстракція зводить об'єкт реального світу до його суттєвих визначальних характеристик, інкапсуляція поширює цю ідею, моделюючи та пов'язуючи цю функціональність цієї сутності.