Капсулиране срещу абстракция
Капсулирането и абстракцията са две различни, но свързани концепции, открити в езиците на OOP (обектно-ориентирано програмиране). Капсулирането е концепцията за комбиниране на данни и поведение заедно като едно цяло. От друга страна, абстракцията е процес на представяне на това как даден обект се държи / изглежда, за разлика от това как се прилага.
Какво е капсулиране?
Капсулирането е процес на опаковане на данни и операции, които ги оперират в един обект. Това по същество означава, че за достъп до данни трябва да се използват определени предварително дефинирани методи. С други думи, капсулираните данни не са пряко достъпни. Това гарантира, че целостта на данните е запазена, тъй като потребителят не е в състояние да осъществява пряк достъп и да променя данните, както желае. Потребителите ще получават или задават стойностите на данните само чрез методите, които са публично достъпни за потребителите. Тези методи обикновено осигуряват проверка на данните, така че в полетата е позволено да се вмъкват само данните в подходящия формат. Следователно ползите от капсулирането са три пъти. Чрез капсулиране програмистът може да направи полета от клас само за четене или само за запис. Второ,клас може да има пълен контрол над това, което се съхранява в неговите полета. И накрая, потребителите на клас не трябва да се притесняват как се съхраняват неговите данни. В Java програмистът може да обяви променливата на всички екземпляри за частна и да предостави методи за получаване и задаване (които са публични) за достъп и промяна на частните полета.
Какво е абстракция?
Абстракцията е процес на отделяне на подробностите за презентацията от подробностите за изпълнението. Това се прави така, че разработчикът да бъде освободен от по-сложните подробности за изпълнението. Вместо това програмистът може да се съсредоточи върху презентацията или поведенческите подробности на обекта. С прости думи, абстракцията се фокусира върху това как даден обект може да се използва, а не как се прилага. Абстракцията по същество скрива подробностите за изпълнението, така че дори ако методологията за внедряване се промени с течение на времето, програмистът няма да се тревожи как ще се отрази на неговата програма. Системата може да бъде абстрахирана на няколко слоя или нива. Например нивата на абстракция на нива ще разкрият хардуерни детайли, докато абстракцията на високо ниво ще разкрие само бизнес логиката на обекта. Терминът абстракция може да се използва както за обект, така и за процес и това води до известно объркване. Като процес абстракцията означава извличане на съществени детайли, като същевременно се игнорират несъществените детайли на даден елемент или група от предмети, докато като обект абстракцията означава модел или изглед на обект само със съществените подробности. В Java програмистът може да използва ключовата дума abstract, за да декларира клас като абстрактна същност, която представлява основните определящи характеристики на обект от реалния свят.програмистът може да използва ключовата дума abstract, за да декларира клас като абстрактна същност, която представлява основните определящи характеристики на обект от реалния свят.програмистът може да използва ключовата дума abstract, за да декларира клас като абстрактна същност, която представлява основните определящи характеристики на обект от реалния свят.
Каква е разликата между капсулиране и абстракция?
Въпреки че капсулирането и абстракцията са силно свързани понятия, открити в обектно-ориентираните програмни езици, те имат ключови разлики. Абстракцията е техника, която ни помага да идентифицираме какво трябва да се вижда и какво трябва да се скрие. Капсулирането е техниката за опаковане на информацията, така че да прави видимо това, което трябва да се вижда и да скрива това, което трябва да се скрие. С други думи, капсулирането може да бъде идентифицирано като една стъпка отвъд абстракцията. Докато абстракцията намалява обект от реалния свят до основните му определящи характеристики, капсулирането разширява тази идея чрез моделиране и свързване на тази функционалност на тази същност.