Что такое инкапсуляция в ООП

Ответ

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

Ключевые аспекты:

  • Сокрытие данных — использование модификаторов доступа (private, protected, public).
  • Контролируемый доступ — через свойства (get/set) и методы.

Пример:

public class BankAccount
{
    private decimal _balance; // Поле скрыто

    public decimal Balance // Контролируемый доступ
    {
        get { return _balance; }
        private set { _balance = value; }
    }

    public void Deposit(decimal amount)
    {
        if (amount > 0)
            Balance += amount;
    }
}

Здесь _balance защищён от прямого изменения, а пополнение счёта возможно только через метод Deposit.

Ответ 18+ 🔞

А, ну ты смотри, инкапсуляция! Это ж как в армии, блядь: тебе дают автомат, но не показывают, как он внутри устроен, чтобы ты его, сука, не разобрал и не накосячил. Так и тут — ты объединяешь данные и методы в одну кучу, в один объект, и прячешь всю свою внутреннюю кухню от посторонних глаз. Чтобы какой-нибудь левый код не пришёл и не начал там всё ломать, как слон в посудной лавке.

В чём соль, блядь:

  • Прячешь данные, как золото — используешь эти модификаторы доступа: private, protected, public. Всё, что private, — это твоё личное, под одеялом, никому не показываешь.
  • Контролируешь доступ, как строгий вахтёр — не просто так даёшь кому попало, а только через специальные пропуски: свойства с get/set или методы.

Смотри, как на примере:

public class BankAccount
{
    private decimal _balance; // Вот это — наши кровные, спрятаны на хуй

    public decimal Balance // А это — окошко кассы, через него только смотреть можно
    {
        get { return _balance; }
        private set { _balance = value; }
    }

    public void Deposit(decimal amount) // А положить деньги — только через этот метод, с проверкой
    {
        if (amount > 0)
            Balance += amount;
    }
}

Видишь? Поле _balance закрыто наглухо, как бункер. Просто так взять и изменить его — хуй тебе, а не изменение. Хочешь положить деньги? Пожалуйста, но только через метод Deposit, где мы проверим, что сумма положительная, а не какая-нибудь хуйня. Красота, ёпта! Всё под контролем, и никто твой баланс просто так не обнулит.