Заглавието казва всичко, малко съм объркан, тъй като ми беше зададен въпрос, че обработката на информация по отношение на ООП е абстракция или капсулиране? Избрах абстракция, но все пак съм объркан, защото при капсулирането ние също скриваме полетата, а при абстракцията скриваме детайлите. Всякаква помощ в това отношение
Скриването на информация е абстракция или капсулиране?
Отговори (4)
Може да ви помогне, ако мислите за капсулирането като за един от инструментите, използвани за създаване на абстракция. Вижте записа в wikipedia за капсулиране тук http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)
Abstraction
обикновено скрива информация, докато Encapsulation
разделя променливите данни от непроменените. По този начин Encapsulation
помага за постигането на Open Closed Principle
.
Ето един хубав отговор, който според мен премахва объркването
Капсулирането има две лица; абстракция на данни и скриване на информация. Абстракцията на данни е тип, който се вижда отвън. Скриването на информация е вид погледнат отвътре.
- Абстракцията се фокусира върху външния изглед на обект (т.е. интерфейса)
- Капсулирането (скриване на информация) не позволява на клиентите да видят нейния вътрешен изглед, където се изпълнява поведението на абстракцията
Капсулиране = Скриване на сложностите / информация
Абстракция = (донякъде) дефиниран начин за справяне със сложностите, използвайки капсулиране