Енкапсулација вс апстракција
Инкапсулација и апстракција су два различита, али повезана концепта која се налазе у ООП (Објецт Ориентед Программинг) језицима. Инкапсулација је концепт комбинирања података и понашања заједно као јединствене целине. С друге стране, апстракција је процес представљања како се ентитет понаша \ изгледа за разлику од начина његовог спровођења.
Шта је енкапсулација?
Инкапсулација је процес замотавања података и операција које на њима делују у једну целину. То у суштини значи да би се за приступ подацима требало користити одређене унапред дефинисане методе. Другим речима, енкапсулирани подаци нису директно доступни. Тиме се осигурава очување интегритета података јер корисник не може директно приступити и модифицирати податке онако како жели. Корисници ће добити или поставити вредности података само путем метода које су јавно доступне корисницима. Ове методе обично омогућавају провјеру података тако да се у поља могу уносити само подаци у одговарајућем формату. Стога су предности енкапсулације троструке. Кроз енкапсулацију, програмер може направити поља класе само за читање или за писање. Друго, класа може имати потпуну контролу над оним што је сачувано у њеним пољима. Најзад, корисници класе не морају да се брину како се њени подаци чувају. У Јави програмер може прогласити све променљиве инстанце приватним и пружити методе гет и сет (које су јавне) за приступ и измена приватних поља.
Шта је апстракција?
Апстракција је поступак одвајања презентационих детаља од детаља имплементације. То се ради тако да се програмер ослободи сложенијих детаља имплементације. Умјесто тога, програмер се може фокусирати на презентацију или детаље о понашању ентитета. Једноставно речено, апстракција се фокусира на то како се одређени ентитет може користити, а не како се проводи. Апстракција у основи крије детаље имплементације, тако да чак и ако се методологија примене с временом мења, програмер се не би морао бринути како ће то утицати на његов програм. Систем може бити апстрахиран у више слојева или нивоа. На примјер, слојеви апстракције ниског нивоа откриће детаље хардвера, док апстракција високог нивоа ће открити само пословну логику ентитета. Израз апстракција може се користити за означавање и ентитета и процеса, што доводи до неке збрке. Као процес, апстракција значи извлачење битних детаља уз игнорисање небитних детаља ставке или групе предмета, док као ентитет, апстракција означава модел или приказ ентитета са само битним детаљима. У Јави програмер може користити кључну реч сажетак да декларише класу као апстрактни ентитет, што представља суштинске дефинисиве карактеристике стварног светског ентитета.
Која је разлика између енкапсулације и апстракције?
Иако су енкапсулација и апстракција изразито повезани појмови који се налазе у објектно програмским језицима, они имају кључне разлике. Апстракција је техника која нам помаже да идентификујемо шта треба бити видљиво и шта треба сакрити. Инкапсулација је техника паковања информација тако да чини видљивим оно што треба да буде видљиво и сакрива оно што би требало сакрити. Другим речима, капсулација се може идентификовати као корак изван апстракције. Док апстракција смањује предмет стварног света на његове суштинске дефинишуће карактеристике, инкапсулација проширује ову идеју моделирањем и повезивањем ове функционалности тог ентитета.