VDT2
@VDT2
Java

Кто из нас прав про Инкапсуляцию в ООП?

Спорим с другом про инкапсуляцию.

Я утверждаю, что суть инкапсуляции в разграничении доступа. Поясняя, что ключевые слова PUBLIC, PROTECTED и PRIVATE и есть ее основоположение.

Друг же утверждает, что:
Инкапсуляция - в первую очередь, объединение в объекте данных (переменных) и методов (функций) их обработки. Код функций скрыт от пользователя (Пользователь не знает как работает эта функция, он получает только результат).

p.s. Интересно ваше решение по спору. Именно, кто прав, а кто нет. Спасибо.
  • Вопрос задан
  • 197 просмотров
Пригласить эксперта
Ответы на вопрос 4
@WaterSmith
Android-разработчик. Java, Kotlin
Ваш друг описывает смысл инкапсуляции, а вы - средства для её реализации. На мой взгляд, ваш друг трактует в более общем смысле, более полно.
Ответ написан
Комментировать
approximate_solution
@approximate_solution
JS Developer. Angular\React\Vue\Ember
Из книг которые трактуют инкапсуляцию -
Трактовка №1

Инкапсуляция - это объединения данных и функций, которые управляют этими данными, в единый компонент.

Трактовка №2

Инкапсуляция - это механизм отдельного взятого языка, позволяющий ограничить доступ одних компонентов программы, к другим.

Инкапсуляция обеспечивает сокрытие, но не является сокрытием.

Если более просто -

Инкапсуляция — мы прячем сложность внутри, а наружу выставляем несколько простых интерфейсов (принцип телевизора — у нас есть пульт, а все «провода» скрыты в корпусе).
Ответ написан
Комментировать
@mkone112
Начинающий питонист.
Друг прав, а вы путаете инкапсуляцию и сокрытие.
Ответ написан
Комментировать
@yestodev
Понимать инкапсуляцию только как сокрытие не совсем правильно.
Сокрытия данных можно добиться например в Си. Который вообще не является языком с парадигмой ООП.

Так что связь функций и данных - это более правильное определение. Плюс от языка к языку, и от книге к книге определения отличаются. Создатель ООП (Алан Кей) вообще понимал ООП совсем не так, как оно реализовано в моей уютненькой Java, например. И ничего. :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы