Абстракція та інкапсуляція - це основні об'єктно-орієнтовані програми програмування (OOP), які дозволяють реалізовувати об'єкти реального світу в програми та коди. Хоча обидва йдуть рука об руку, вони сильно відрізняються один від одного. Хоча кожен метод є інкапсуляцією, це також абстракція. Простіше кажучи, коли ви складаєте різні речі для створення сутності, ви фактично створюєте поняття - конспект. Хоча обидва технічно невіддільні, вони не мають буквально нічого спільного. Практично вірно, що кожна інкапсуляція - це абстракція, оскільки вони обидва щось приховують, однак мають свою справедливу частку відмінностей.
Абстракція - це основна концепція ООП, яка фокусується лише на відповідних даних про об'єкт і приховує всі невідповідні деталі, які можуть бути, а можуть і не бути загальними або спеціалізованими поведінкою. Він приховує фонові деталі та акцентує увагу на важливих моментах зменшення складності та підвищення ефективності. В основному абстракція - це інструмент програмування для управління складністю. Абстракція зосереджується на ідеях, а не на подіях. Він приховує деталі на рівні дизайну, забезпечуючи функціональність для користувачів. Отриманий об'єкт також можна назвати абстракцією. Програміст гарантує, що в названому об'єкті будуть включені всі суттєві аспекти і жоден із невідповідних.
Візьмемо приклад реального світу абстракції. Розглянемо випадок транспортного засобу, який у даному випадку є вашим транспортним засобом. Механік намагається відремонтувати вашу машину або скажімо конкретну частину вашого автомобіля. Ось ви - користувач, і не хочете вникати в специфіку вашого автомобіля або на те, що фактично зламалася. Вас насправді не цікавлять ці речі; Ви просто хочете повернути свій автомобіль у початковому стані, не турбуючись про деталі. Отже, ви фактично сказали механіку, чого ви хочете, розділивши частину реалізації. Це абстракція. Ви зосередилися на найважливішому, що стосується налагодження вашого автомобіля, а не на фокусі на конкретних характеристиках.
Інкапсуляція - це ще одна концепція OOP, яка пов'язує дані та функції в єдиний компонент, обмежуючи доступ до деяких компонентів. Це одне з основних фундаментальних концепцій ООП, яке містить дані та інформацію в єдине ціле. У технічному плані інкапсуляція означає приховування атрибутів для екранування змінних від зовнішнього доступу, так що зміна в одній частині програми не вплине на інші частини. Навпаки, зробивши інформацію більш відкритою, ви ризикуєте неправомірним використанням даних. Він забезпечує основну цілісність даних, захищаючи їх від зовнішнього світу. Простіше кажучи, вона приховує зайві деталі із зовнішнього світу.
Візьмемо приклад Bluetooth миші. Вам потрібно знати лише про поведінку пристрою, не турбуючись про деталі впровадження, наприклад, які датчики має миша, чи це бездротовий зв’язок чи ні, і т. Д. Кожна деталь описує мишу, але незалежно від деталей, це лише миша. Вам просто потрібен інтерфейс для використання миші, яка в даному випадку є вказівником миші. Це капсулювання.
Хоча обидва є основоположними поняттями, пов'язаними з ООП, і вони технічно невіддільні, вони все ще мають свої відмінності в багатьох аспектах.
Абстракція | Інкапсуляція |
Він розглядає лише відповідні деталі, приховуючи невідповідні, щоб зменшити складність, тим самим підвищивши ефективність. | Він пов'язує дані та інформацію разом у єдине ціле, щоб захистити дані від зовнішніх джерел. |
Це стосується ідеї приховування даних, яка не потрібна для цілей презентації. | Він приховує дані та код, щоб обмежити небажаний доступ. |
Він фокусується на тому, що, а не як. | Він приховує внутрішню механіку того, як щось робить. |
Він приховує непотрібні деталі на рівні дизайну. | Він також приховує деталі, але на рівні реалізації. |
Інформація та дані відокремлюються від відповідних даних. | Інформація прихована всередині капсули для близького доступу. |
Це стосується ідеї, а не подій. | Ідея полягає у захисті даних від зовнішнього світу. |
Він реалізований за допомогою абстрактного класу та інтерфейсу. | Він реалізований за допомогою захищених, приватних та приватно-пакетних модифікаторів доступу. |
Хоча обидва є концепціями OOP, пов'язаними з приховуванням даних, вони сильно відрізняються один від одного. Абстракція також відноситься до приховування подібної інкапсуляції, але, хоча перша приховує складність, друга зберігає дані, які вона інкапсулює, контролюючи доступ до них. Абстракція означає концепцію представлення лише необхідних функцій, приховуючи невідповідні деталі, щоб зменшити складність програми, тим самим підвищивши ефективність. З іншого боку, інкапсуляція стосується концепції приховування всієї внутрішньої механіки програми, щоб захистити інформацію від небажаного доступу. Він пов'язує дані та інформацію разом у єдиний компонент, обмежуючи доступ до інших компонентів.