Инкапсуляция — это принцип ООП, который скрывает внутреннюю реализацию объекта и предоставляет доступ к данным только через публичные методы. Она позволяет защитить внутреннее состояние объекта и управлять доступом к нему.
Пример инкапсуляции
class Encapsulated {
private:
int data; // Скрытая переменная, доступна только внутри класса
public:
// Публичный метод для установки значения переменной
void setData(int value) {
data = value;
}
// Публичный метод для получения значения переменной
int getData() const {
return data;
}
};
int main() {
Encapsulated obj;
obj.setData(10); // Установка значения через публичный метод
int value = obj.getData(); // Получение значения через публичный метод
return 0;
}
Зачем нужна инкапсуляция
- Инварианты класса:
- Позволяет поддерживать инварианты класса, гарантируя, что объект всегда находится в допустимом состоянии.
- Пример: проверка корректности данных внутри методов установки значений.
- Контроль доступа:
- Ограничивает доступ к внутренним данным и методам, защищая их от некорректного использования.
- Пример: переменные могут быть доступны только через методы, что предотвращает их случайное или некорректное изменение.
- Упрощение поддержки и изменения кода:
- Изменения в реализации можно делать без изменений в других частях программы, которые используют класс.
- Пример: улучшение производительности или исправление ошибок внутри класса без затрагивания остального кода.