Инкапсуляция және абстракция
Инкапсуляция және абстракция екі түрлі, бірақ OOP (объектіге бағытталған бағдарламалау) тілдерінде кездесетін өзара байланысты ұғым. Инкапсуляция – деректер мен мінез-құлықты бір нысан ретінде біріктіру тұжырымдамасы. Екінші жағынан, абстракция – бұл нысанның қалай әрекет ететінін\ оның қалай жүзеге асырылатынына қарама-қарсы көрінетінін көрсету процесі.
Инкапсуляция дегеніміз не?
Инкапсуляция – деректер мен оларда жұмыс істейтін операцияны бір нысанға орау процесі. Бұл деректерге қол жеткізу үшін белгілі бір алдын ала анықталған әдістерді пайдалану керек дегенді білдіреді. Басқаша айтқанда, инкапсуляцияланған деректерге тікелей қол жеткізу мүмкін емес. Бұл деректердің тұтастығының сақталуын қамтамасыз етеді, себебі пайдаланушы деректерге тікелей қол жеткізе және өз қалауы бойынша өзгерте алмайды. Пайдаланушылар деректер мәндерін пайдаланушыларға жалпыға қолжетімді әдістер арқылы ғана алады немесе орнатады. Бұл әдістер әдетте өрістерге сәйкес пішімдегі деректерді ғана кірістіруге рұқсат беретіндей деректерді тексеруді қамтамасыз етеді. Сондықтан инкапсуляцияның пайдасы үш есе көп. Инкапсуляция арқылы бағдарламашы сыныптың өрістерін тек оқуға немесе тек жазуға арналған етіп жасай алады. Екіншіден, сынып өз өрістерінде сақталатын нәрселерді толық басқара алады. Соңында, сыныптың пайдаланушылары оның деректері қалай сақталатынына алаңдамауы керек. Java тілінде бағдарламашы барлық даналық айнымалы мәнді жеке деп жариялай алады және жеке өрістерге қатынасу және өзгерту үшін алу және орнату әдістерін (жалпыға ортақ) қамтамасыз ете алады.
Абстракция дегеніміз не?
Абстракция – көрсетілім мәліметтерін іске асыру мәліметтерінен бөлу процесі. Бұл әзірлеуші күрделірек іске асыру мәліметтерінен босатылуы үшін жасалады. Оның орнына бағдарламашы презентацияға немесе нысанның мінез-құлық мәліметтеріне назар аудара алады. Қарапайым тілмен айтқанда, абстракция белгілі бір нысанның қалай жүзеге асырылатынына емес, оны қалай пайдалануға болатынына назар аударады. Абстракция іс жүзінде іске асырудың егжей-тегжейлерін жасырады, сондықтан енгізу әдістемесі уақыт өте келе өзгерсе де, бағдарламашы оның бағдарламасына қалай әсер ететіні туралы алаңдамауы керек. Жүйені бірнеше қабаттарда немесе деңгейде абстракциялауға болады. Мысалы, төменгі деңгейлі абстракциялық қабаттар аппараттық құралдар туралы мәліметтерді ашады, ал жоғары деңгейлі абстракция тек нысанның бизнес логикасын ашады. Абстракция термині субъектіге де, процеске де сілтеме жасау үшін қолданылуы мүмкін және бұл кейбір шатасуға әкеледі. Процесс ретінде абстракция элементтің немесе элементтер тобының маңызды емес мәліметтерін елемей, маңызды мәліметтерді алуды білдіреді, ал нысан ретінде абстракция тек маңызды мәліметтері бар нысанның үлгісін немесе көрінісін білдіреді. Java тілінде бағдарламашы классты дерексіз нысан ретінде жариялау үшін abstract кілт сөзін пайдалана алады, ол нақты әлем нысанының маңызды анықтаушы сипаттамаларын білдіреді.
Инкапсуляция мен абстракцияның айырмашылығы неде?
Инкапсуляция және абстракция объектіге бағытталған бағдарламалау тілдерінде кездесетін өте жақын ұғымдар болса да, олардың негізгі айырмашылықтары бар. Абстракция - бұл ненің көрінетінін және ненің жасырын болуы керектігін анықтауға көмектесетін әдіс. Инкапсуляция - бұл көрінетін нәрсені көрінетін етіп, жасырылуы керек нәрсені жасыратындай ақпаратты орау әдістері. Басқаша айтқанда, инкапсуляцияны абстракциядан бір қадам артқа қарай анықтауға болады. Абстракция нақты дүние объектісін оның негізгі анықтаушы сипаттамаларына дейін азайтса, инкапсуляция сол нысанның осы функционалдығын модельдеу және байланыстыру арқылы бұл идеяны кеңейтеді.