Абстракция и капсулация са основни концепции за обектно ориентирано програмиране (OOP), които ви позволяват да прилагате обекти от реалния свят в програми и кодове. Докато и двете вървят ръка за ръка, те са много различни един от друг. Въпреки че всеки метод е капсулация, това е и абстракция. Казано по-просто, когато слагате различни неща, за да създадете цялост, вие всъщност създавате концепция - абстракт. Макар и двете да са технически неразделни, те нямат буквално нищо общо. Почти е вярно, че всяко капсулиране е абстракция, защото и двамата крият нещо, но имат своя справедлив дял от различията.
Абстракцията е основна концепция за OOP, която се фокусира само върху съответните данни за даден обект и крие всички нерелевантни подробности, които могат или не могат да бъдат за общо или специализирано поведение. Той крие детайлите на заден план и акцентира върху основните точки за намаляване на сложността и повишаване на ефективността. По същество абстракцията е инструмент за програмиране за управление на сложността. Абстракцията се фокусира върху идеите, а не върху събитията. Той крие детайлите на ниво дизайн, като предоставя функционалност на потребителите. Полученият обект може да се нарече и абстракция. Програмистът гарантира, че в посоченото образувание ще бъдат включени всички съществени аспекти и нито един от неотносимите.
Да вземем пример от реалния свят на абстракцията. Нека разгледаме случая с превозно средство, което в случая е вашето превозно средство. Механик се опитва да поправи вашата кола или да кажем конкретна част от вашия автомобил. Ето, вие сте потребителят и не искате да навлизате в спецификата на колата си или каква част всъщност се е счупила. Всъщност не ги интересуваш тези неща; просто искате вашето превозно средство да се върне в първоначалното си състояние, без да се притеснявате за детайлите. И така, вие всъщност казахте на механика какво искате, като отделите частта за изпълнение. Това е абстракция. Вие се съсредоточихте върху най-същественото нещо, което е да оправите колата си, а не да се фокусирате върху спецификата.
Капсулирането е още една концепция на OOP, която обвързва данни и функции в един компонент, като същевременно ограничава достъпа до някои компоненти. Това е една от основните основни концепции на OOP, която обхваща данни и информация под едно цяло. В техническо отношение, капсулирането означава скриване на атрибути за защита на променливите от външен достъп, така че промяната в една част на приложението да не засяга останалите части. Напротив, като направите информацията по-отворена, ще рискувате злоупотреба с данни. Тя осигурява основна цялост на данните, като ги защитава от външния свят. Най-просто казано, той крие допълнителните детайли от външния свят.
Нека вземем пример за Bluetooth мишка. Трябва само да знаете за поведението на устройството, без да се притеснявате за подробности за внедряването, какъв тип сензори има мишката, безжична ли е или не и др. Всеки един детайл описва мишката, но независимо от детайлите, това е само мишка. Просто се нуждаете от интерфейс, за да използвате мишката, която в случая е показалеца на мишката. Това е капсулиране.
Въпреки че и двете са основни понятия, свързани с OOP и са технически неразделни, те все още имат своите различия в много аспекти.
абстракция | Капсулирането |
Той се занимава само със съответните подробности, като скрива нерелевантните, за да намали сложността, като по този начин повиши ефективността. | Той свързва данните и информацията заедно в едно цяло, за да защити данните от външни източници. |
Отнася се до идеята за скриване на данни, която не е необходима за целите на представянето. | Той крие данните и кода, за да ограничи нежелания достъп. |
Тя се фокусира върху какво, а не как. | Той крие вътрешната механика за това как прави нещо. |
Той крие ненужните детайли на ниво дизайн. | Той също крие детайлите, но на ниво изпълнение. |
Информацията и данните са отделени от съответните данни. | Информацията е скрита вътре в капсула за близък достъп. |
Той се занимава с идеи, а не със събития. | Идеята е да се защитят данните от външния свят. |
Той се реализира с помощта на абстрактни клас и интерфейс. | Той се реализира с помощта на защитени, частни и пакети-частни модификатори за достъп. |
Макар и двете да са OOP концепции, свързани със скриване на данни, те са доста различни един от друг. Абстракцията се отнася също до скриване като капсулиране, но докато първият крие сложност, втората запазва данните, които капсулира, като контролира достъпа до тях. Абстракцията се отнася до концепцията за представяне само на необходимите характеристики чрез скриване на несъществените детайли, за да се намали сложността на приложението, като по този начин се повиши ефективността. Капсулирането, от друга страна, се отнася до концепцията за скриване на цялата вътрешна механика на дадена програма, за да се защити информацията от нежелан достъп. Той свързва данните и информацията заедно в един компонент, като ограничава достъпа до други компоненти.