Разлика между абстракция и капсулация

Абстракция и капсулация са основни концепции за обектно ориентирано програмиране (OOP), които ви позволяват да прилагате обекти от реалния свят в програми и кодове. Докато и двете вървят ръка за ръка, те са много различни един от друг. Въпреки че всеки метод е капсулация, това е и абстракция. Казано по-просто, когато слагате различни неща, за да създадете цялост, вие всъщност създавате концепция - абстракт. Макар и двете да са технически неразделни, те нямат буквално нищо общо. Почти е вярно, че всяко капсулиране е абстракция, защото и двамата крият нещо, но имат своя справедлив дял от различията.

Какво е абстракция?

Абстракцията е основна концепция за OOP, която се фокусира само върху съответните данни за даден обект и крие всички нерелевантни подробности, които могат или не могат да бъдат за общо или специализирано поведение. Той крие детайлите на заден план и акцентира върху основните точки за намаляване на сложността и повишаване на ефективността. По същество абстракцията е инструмент за програмиране за управление на сложността. Абстракцията се фокусира върху идеите, а не върху събитията. Той крие детайлите на ниво дизайн, като предоставя функционалност на потребителите. Полученият обект може да се нарече и абстракция. Програмистът гарантира, че в посоченото образувание ще бъдат включени всички съществени аспекти и нито един от неотносимите.

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

Какво е капсулация?

Капсулирането е още една концепция на OOP, която обвързва данни и функции в един компонент, като същевременно ограничава достъпа до някои компоненти. Това е една от основните основни концепции на OOP, която обхваща данни и информация под едно цяло. В техническо отношение, капсулирането означава скриване на атрибути за защита на променливите от външен достъп, така че промяната в една част на приложението да не засяга останалите части. Напротив, като направите информацията по-отворена, ще рискувате злоупотреба с данни. Тя осигурява основна цялост на данните, като ги защитава от външния свят. Най-просто казано, той крие допълнителните детайли от външния свят.

Нека вземем пример за Bluetooth мишка. Трябва само да знаете за поведението на устройството, без да се притеснявате за подробности за внедряването, какъв тип сензори има мишката, безжична ли е или не и др. Всеки един детайл описва мишката, но независимо от детайлите, това е само мишка. Просто се нуждаете от интерфейс, за да използвате мишката, която в случая е показалеца на мишката. Това е капсулиране.

Разлика между абстракция и капсулация

Въпреки че и двете са основни понятия, свързани с OOP и са технически неразделни, те все още имат своите различия в много аспекти.

  1. Разлики в „Определение“ на абстракцията и капсулирането - Абстракцията е основна концепция за OOP, която акцентира върху всички съществени аспекти на даден обект чрез скриване на неуместните детайли за повишаване на ефективността и премахване на сложността. Капсулирането, от друга страна, е механизъм за скриване на данни, който обвива данните и информацията в капсула, за да ограничи достъпа от външния свят.
  2. Разлики във „функционалност“ на абстракция и капсулация- Абстракцията е механизъм за скриване на данни, който подчертава само съществените характеристики за опростяване на сложните програми, а от друга страна капсулирането е метод за обвързване на данни и кодове в едно цяло. Идеята е да защитите детайлите за изпълнение от външен достъп.
  3. Различията в „изпълнение“ на абстракцията и капсулирането - Абстракцията се осъществява с помощта на абстрактни клас и интерфейс, докато капсулирането се осъществява с помощта на модификатори за достъп. За капсулиране на данни се използват пет вида модификатори: Частни, Публични, Вътрешни, Защитени и Защитени Вътрешни.
  4. Разлики в „Концепция“ на абстракция и капсулация- Идеята зад абстракцията е да се съсредоточим върху какво, а не как. Капсулирането крие вътрешната механика на това как. Например, когато карате кола, знаете точно какво прави педалът на спирачката, но може да не знаете целия механизъм зад него, защото данните са капсулирани.
  5. Разлики в „Пример“ на абстракция и капсулация - Нека вземем пример за смартфон. Знаеш какво прави, но може и да не знаеш как прави това, което прави. Грижите ви само за екрана на дисплея и бутоните на клавиатурата, а не се притеснявате за неговата вътрешна схема. Тук смартфонът е абстракт, където вътрешните детайли за внедряване са капсулирани.

Абстракция срещу капсулация с таблицата за сравнение

абстракция Капсулирането
Той се занимава само със съответните подробности, като скрива нерелевантните, за да намали сложността, като по този начин повиши ефективността. Той свързва данните и информацията заедно в едно цяло, за да защити данните от външни източници.
Отнася се до идеята за скриване на данни, която не е необходима за целите на представянето. Той крие данните и кода, за да ограничи нежелания достъп.
Тя се фокусира върху какво, а не как. Той крие вътрешната механика за това как прави нещо.
Той крие ненужните детайли на ниво дизайн. Той също крие детайлите, но на ниво изпълнение.
Информацията и данните са отделени от съответните данни. Информацията е скрита вътре в капсула за близък достъп.
Той се занимава с идеи, а не със събития. Идеята е да се защитят данните от външния свят.
Той се реализира с помощта на абстрактни клас и интерфейс. Той се реализира с помощта на защитени, частни и пакети-частни модификатори за достъп.

резюме

Макар и двете да са OOP концепции, свързани със скриване на данни, те са доста различни един от друг. Абстракцията се отнася също до скриване като капсулиране, но докато първият крие сложност, втората запазва данните, които капсулира, като контролира достъпа до тях. Абстракцията се отнася до концепцията за представяне само на необходимите характеристики чрез скриване на несъществените детайли, за да се намали сложността на приложението, като по този начин се повиши ефективността. Капсулирането, от друга страна, се отнася до концепцията за скриване на цялата вътрешна механика на дадена програма, за да се защити информацията от нежелан достъп. Той свързва данните и информацията заедно в един компонент, като ограничава достъпа до други компоненти.