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

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

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

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

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

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

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

Візьмемо приклад Bluetooth миші. Вам потрібно знати лише про поведінку пристрою, не турбуючись про деталі впровадження, наприклад, які датчики має миша, чи це бездротовий зв’язок чи ні, і т. Д. Кожна деталь описує мишу, але незалежно від деталей, це лише миша. Вам просто потрібен інтерфейс для використання миші, яка в даному випадку є вказівником миші. Це капсулювання.

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

Хоча обидва є основоположними поняттями, пов'язаними з ООП, і вони технічно невіддільні, вони все ще мають свої відмінності в багатьох аспектах.

  1. Відмінності в "визначенні" абстракції та інкапсуляції - Абстракція - це фундаментальна концепція ООП, яка акцентує увагу на всіх суттєвих аспектах об'єкта, приховуючи невідповідні деталі для підвищення ефективності та усунення складності. Інкапсуляція, з іншого боку, - це механізм приховування даних, який загортає дані та інформацію в капсулу, щоб обмежити доступ із зовнішнього світу.
  2. Відмінності у "функціональності" абстракції та інкапсуляції- Абстракція - це механізм приховування даних, який висвітлює лише суттєві особливості для спрощення складних програм, а інкапсуляція - з іншого боку, метод зв’язування даних і кодів в єдине ціле. Ідея полягає у захисті деталей реалізації від зовнішнього доступу.
  3. Відмінності у "здійсненні" абстрагування та інкапсуляції - Абстракція реалізується за допомогою абстрактного класу та інтерфейсу, а інкапсуляція реалізується за допомогою модифікаторів доступу. Для інкапсуляції даних використовуються п'ять типів модифікаторів: приватні, загальнодоступні, внутрішні, захищені та захищені внутрішні.
  4. Відмінності поняття "Концепція" абстракції та інкапсуляції- Ідея абстракції полягає в тому, щоб зосередитись на тому, що, а не як. Інкапсуляція приховує внутрішню механіку того, як. Наприклад, коли ви керуєте автомобілем, ви точно знаєте, що робить педаль гальма, але ви, можливо, не знаєте всього механізму, який знаходиться за ним, оскільки дані інкапсульовані.
  5. Відмінності у "прикладі" абстракції та інкапсуляції - Візьмемо приклад смартфона. Ви знаєте, що це робить, але ви можете не знати, як він робить те, що робить. Ви дбаєте лише про екран дисплея та кнопки клавіатури, а не переживаєте за його внутрішню схему. Тут смартфон - це конспект, де внутрішні деталі реалізації укладені.

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

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

Підсумок

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