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

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

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

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

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

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

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

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

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

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


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

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

резюме

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

Препратки

  • Buyya. Обектно-ориентирано програмиране с Java: Основи и приложения. NYC: Tata McGraw-Hill Education, 2009. Печат
  • Макконъл, Стив. Код завършен (второ издание). London: Pearson Education, 2004. Печат
  • Микелсен, Клаус. C # Primer Plus. Индианаполис: Sams Publishing, 2002. Печат
  • „Кредитна снимка: https://stackoverflow.com/questions/742341/difference-between-abstraction-and-encapsulation“