Скриването на информация е абстракция или капсулиране?

Заглавието казва всичко, малко съм объркан, тъй като ми беше зададен въпрос, че обработката на информация по отношение на ООП е абстракция или капсулиране? Избрах абстракция, но все пак съм объркан, защото при капсулирането ние също скриваме полетата, а при абстракцията скриваме детайлите. Всякаква помощ в това отношение


person Community    schedule 30.03.2014    source източник


Отговори (4)


Може да ви помогне, ако мислите за капсулирането като за един от инструментите, използвани за създаване на абстракция. Вижте записа в wikipedia за капсулиране тук http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)

person David Wilkins    schedule 30.03.2014

Abstraction обикновено скрива информация, докато Encapsulation разделя променливите данни от непроменените. По този начин Encapsulation помага за постигането на Open Closed Principle.

person Wasif Hossain    schedule 30.03.2014

Ето един хубав отговор, който според мен премахва объркването

Капсулирането има две лица; абстракция на данни и скриване на информация. Абстракцията на данни е тип, който се вижда отвън. Скриването на информация е вид погледнат отвътре.

  • Абстракцията се фокусира върху външния изглед на обект (т.е. интерфейса)
  • Капсулирането (скриване на информация) не позволява на клиентите да видят нейния вътрешен изглед, където се изпълнява поведението на абстракцията
person humam    schedule 30.03.2014

Капсулиране = Скриване на сложностите / информация

Абстракция = (донякъде) дефиниран начин за справяне със сложностите, използвайки капсулиране

person sallushan    schedule 30.03.2014
comment
Абстракцията се справя със сложностите? не крие вашите детайли на ниско ниво? - person ; 30.03.2014
comment
Прав си, редактирах отговора си, всъщност говорех за по-голям обхват на функционалност, но по-добре е по този начин - person sallushan; 30.03.2014