Инкапсуляция — это принцип ООП, который скрывает внутреннюю реализацию объекта и предоставляет доступ к данным только через публичные методы. Она позволяет защитить внутреннее состояние объекта и управлять доступом к нему.

Пример инкапсуляции

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;
}

Зачем нужна инкапсуляция

  1. Инварианты класса:
    • Позволяет поддерживать инварианты класса, гарантируя, что объект всегда находится в допустимом состоянии.
    • Пример: проверка корректности данных внутри методов установки значений.
  2. Контроль доступа:
    • Ограничивает доступ к внутренним данным и методам, защищая их от некорректного использования.
    • Пример: переменные могут быть доступны только через методы, что предотвращает их случайное или некорректное изменение.
  3. Упрощение поддержки и изменения кода:
    • Изменения в реализации можно делать без изменений в других частях программы, которые используют класс.
    • Пример: улучшение производительности или исправление ошибок внутри класса без затрагивания остального кода.