Разлика између апстракције и енкапсулације

Апстракција и енкапсулација су основни концептно-оријентисани програмирање (ООП) који вам омогућавају да имплементирате објекте из стварног света у програме и кодове. Док им обоје иду од руке, они се међусобно јако разликују. Иако је свака метода инкапсулација, то је и апстракција. Једноставно речено, када саставите различите ствари да бисте створили ентитет, ви заправо стварате концепт - апстракт. Иако су обоје технички нераздвојни, они немају буквално ништа заједничко. Готово је тачно да је свака инкапсулација апстракција, јер обоје нешто крију, међутим, они имају свој правични део разлике.

Шта је апстракција?

Апстракција је основни ООП концепт који се фокусира на само релевантне податке о објекту и скрива све небитне детаље који могу бити, а не морају бити генеричког или специјализованог понашања. Сакрива позадинске детаље и наглашава суштинске тачке за смањење сложености и повећање ефикасности. У основи, апстракција је програмерско средство за управљање сложеношћу. Апстракција се фокусира на идеје, а не на догађаје. Сакрива детаље на нивоу дизајна пружајући корисницима функционалност. Резултирајући објект се такође може назвати апстракцијом. Програмер осигурава да ће именовани ентитет имати све битне аспекте и ниједан од небитних.

Узмимо пример из реалног света апстракције. Размотримо случај возила, који је у овом случају ваше возило. Механичар покушава да поправи ваш аутомобил или рецимо одређени део вашег аутомобила. Ево, ви сте корисник и не желите да се упуштате у специфичности вашег аутомобила или оног дела који се заправо покварио. Те ствари заправо не занимају; само желите да се ваше возило врати у првобитном стању без бриге о детаљима. Дакле, ви сте механичару заправо рекли шта желите раздвајајући део за имплементацију. Ово је апстракција. Фокусирали сте се на оно најважније, а то је поправљање вашег аутомобила, а не фокусирање на специфичности.

Шта је енкапсулација?

Инкапсулација је још један ООП концепт који повезује податке и функције у једну компоненту, ограничавајући приступ неким компонентама. То је један од главних темељних концепата ООП-а који податке и информације окупља у једну јединицу. Технички гледано, енкапсулација значи скривање атрибута како би се штитиле променљиве од спољног приступа тако да промена у једном делу апликације неће утицати на остале делове. Напротив, чинећи податке отворенијим ризикујете злоупотребу података. Даје основни интегритет подацима штитећи их од спољног света. Једноставно речено, она скрива додатне детаље из спољног света.

Узмимо пример Блуетоотх миша. Морате знати само о понашању уређаја без бриге о детаљима имплементације попут каквих сензора има миш, је ли бежични или не итд. Сваки поједини детаљ описује миш, али без обзира на детаље, то је само миш. Потребан вам је само интерфејс да бисте користили миш, што је у овом случају показивач миша. Ово је капсулација.

Разлика између апстракције и енкапсулације

Иако су оба основна концепта повезана са ООП-ом и технички су нераздвојна, и даље имају своје разлике у многим аспектима.

  1. Разлике у „дефиницији“ апстракције и енкапсулације - Апстракција је основни ООП концепт који наглашава све битне аспекте објекта скривањем небитних детаља за повећање ефикасности и елиминисање сложености. Инкапсулација, с друге стране, представља механизам за скривање података који обавија податке и информације у капсулу ради ограничавања приступа из спољног света.
  2. Разлике у „Функционалности“ апстракције и енкапсулације- Апстракција је механизам за скривање података који истиче само битне карактеристике за поједностављење сложених програма, док је, са друге стране, енкапсулација метода повезивања података и кодова у јединицу. Идеја је заштитити детаље имплементације од екстерног приступа.
  3. Разлике у „имплементацији“ апстракције и енкапсулације - Апстракција се проводи помоћу апстрактне класе и интерфејса, док се енкапсулација проводи помоћу модификатора приступа. Пет врста модификатора користи се за капсулирање података: приватни, јавни, интерни, заштићени и заштићени унутрашњи.
  4. Разлике у „концепту“ апстракције и енкапсулације- Идеја која стоји иза апстракције је да се фокусира на шта, а не како. Инкапсулација скрива унутрашњу механику како. На пример, када возите аутомобил, тачно знате шта ради папучица кочнице, али можда не знате цео механизам који стоји иза ње, јер су подаци у капсули.
  5. Разлике у „Примеру“ апстракције и енкапсулације - Узмимо пример паметног телефона. Знате шта ради, али можда не знате како то ради. Брига вас само за екран екрана и тастере тастатуре, а не да се бринете о његовом унутрашњем кругу. Овде је паметни телефон апстрактно где су унутрашњи детаљи имплементације заокружени.

Апстракција вс Енкапсулација са упоредном табелом

Одвајање Инкапсулација
Бави се само релевантним детаљима сакривањем небитних да би се смањила сложеност и повећала ефикасност. Он повезује податке и информације заједно у један ентитет да би заштитио податке од спољних извора.
Односи се на идеју о скривању података која није потребна у сврху презентације. Сакрива податке и код да ограничи нежељени приступ.
Фокусира се на шта, а не како. Сакрива унутрашњу механику како нешто ради.
Скрива непотребне детаље на нивоу дизајна. Такође сакрива детаље, али на нивоу имплементације.
Информације и подаци одвојени су од релевантних података. Информације су скривене унутар капсуле за блиски приступ.
Бави се идејама, а не догађајима. Идеја је да се подаци заштите од спољног света.
Проводи се помоћу апстрактне класе и интерфејса. Проводи се помоћу заштићених, приватних и пакетно-приватних модификатора приступа.

Резиме

Иако су оба концепта ООП везана за скривање података, они се међусобно прилично разликују. Апстракција се такође односи на скривање попут енкапсулације, али док прво сакрива сложеност, последње чува податке које енкапсулира контролишући приступ њима. Апстракција се односи на концепт представљања само неопходних функција сакривањем небитних детаља да би се смањила сложеност апликације и на тај начин повећала ефикасност. С друге стране, капсулација се односи на концепт сакривања свих унутрашњих механика програма да би се заштитиле информације од нежељеног приступа. Повезује податке и информације заједно у једну компоненту ограничавајући приступ другим компонентама.