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