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

Название говорит само за себя, я немного запутался, когда мне задали вопрос, что обработка информации с точки зрения ООП - это абстракция или инкапсуляция? Я выбрал абстракцию, но все же меня смущает, потому что при инкапсуляции мы также скрываем поля, а при абстракции скрываем детали. Любая помощь в этом отношении


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


Ответы (4)


Это может помочь, если вы думаете об инкапсуляции как об одном из инструментов, используемых для создания абстракции. См. Запись в википедии об инкапсуляции здесь http://en.wikipedia.org/wiki/Encapsulation_(object-oriated_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