Ответ
Инкапсуляция — это фундаментальный принцип ООП, который объединяет данные (поля) и методы для работы с ними в единую структуру (класс), скрывая внутреннюю реализацию и предоставляя контролируемый публичный интерфейс для взаимодействия.
Основные цели:
- Сокрытие сложности: Пользователь класса работает с простым API, не вникая в детали реализации.
- Защита целостности данных: Поля объявляются
private, а их модификация возможна только через публичные методы (геттеры/сеттеры), где можно добавить валидацию. - Снижение связанности: Внутреннюю логику можно изменять, не затрагивая код, который зависит только от публичного контракта класса.
- Упрощение использования: Сложная внутренняя логика упакована в понятные методы с говорящими именами.
Пример на Java:
public class TemperatureController {
// 1. Данные скрыты (инкапсулированы)
private double currentTemperature;
private final double minSafeTemp = -10.0;
private final double maxSafeTemp = 50.0;
// 2. Контролируемый доступ через публичные методы
public double getCurrentTemperature() {
return currentTemperature;
}
public void setTemperature(double newTemp) {
// 3. Валидация и защита целостности
if (newTemp >= minSafeTemp && newTemp <= maxSafeTemp) {
this.currentTemperature = newTemp;
logTemperatureChange(newTemp);
} else {
throw new IllegalArgumentException("Температура вне безопасного диапазона.");
}
}
// 4. Внутренняя реализация скрыта от внешнего мира
private void logTemperatureChange(double temp) {
System.out.println("Температура изменена на: " + temp);
}
}
Итог: Инкапсуляция — это не просто использование private полей, а практика проектирования, направленная на создание надежных, поддерживаемых и безопасных модулей с четкими границами ответственности.