Название говорит само за себя, я немного запутался, когда мне задали вопрос, что обработка информации с точки зрения ООП - это абстракция или инкапсуляция? Я выбрал абстракцию, но все же меня смущает, потому что при инкапсуляции мы также скрываем поля, а при абстракции скрываем детали. Любая помощь в этом отношении
Скрытие информации - это абстракция или инкапсуляция?
Ответы (4)
Это может помочь, если вы думаете об инкапсуляции как об одном из инструментов, используемых для создания абстракции. См. Запись в википедии об инкапсуляции здесь http://en.wikipedia.org/wiki/Encapsulation_(object-oriated_programming)
Abstraction
обычно скрывает информацию, а Encapsulation
отделяет изменяемые данные от неизменяемых. Таким образом, Encapsulation
помогает достичь Open Closed Principle
.
Вот хороший ответ, который, я думаю, устраняет путаницу.
У инкапсуляции две стороны; абстракция данных и сокрытие информации. Абстракция данных - это тип, видимый снаружи. Скрытие информации - это вид изнутри.
- Абстракция фокусируется на внешнем виде объекта (т.е. интерфейса)
- Инкапсуляция (сокрытие информации) не позволяет клиентам видеть ее внутреннее представление, в котором реализовано поведение абстракции.
Инкапсуляция = Скрытие сложностей / информации
Абстракция = (в некоторой степени) определенный способ справиться со сложностями с использованием инкапсуляции