notebook code editor with encapsulation

Инкапсуляция в C#: 2 поясняющих примера

Введение

Инкапсуляция — одно из основных понятий в объектно-ориентированном программировании (ООП), и в C# это понятие играет ключевую роль. Инкапсуляция можно сравнить с работой почтового ящика: вы можете отправлять письма (данные), зная только адрес почтового ящика (интерфейс объекта), но не знаете, что происходит внутри почтового отделения (внутренняя реализация объекта).

Что такое Инкапсуляция?

Инкапсуляция в программировании — это процесс упаковки данных (переменных) и кода (функций), работающего с этими данными, в один объект. Это помогает:

  • Скрыть внутреннюю реализацию класса от внешнего использования.
  • Сделать интерфейс взаимодействия с объектом простым и понятным.

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

Пример 1: Простой класс с инкапсуляцией

public class BankAccount
{
    private double balance; // Приватное поле, не доступно извне

    public BankAccount(double initialBalance)
    {
        balance = initialBalance;
    }

    // Метод для добавления средств на счет
    public void Deposit(double amount)
    {
        if (amount > 0)
        {
            balance += amount;
        }
    }

    // Метод для получения текущего баланса
    public double GetBalance()
    {
        return balance;
    }
}

В этом примере переменная balance инкапсулирована в классе BankAccount. Она приватная, что означает, что доступ к ней возможен только через публичные методы Deposit и GetBalance.

Пример 2: Расширенная инкапсуляция с использованием свойств

public class Person
{
    private string name;
    public string Name
    {
        get { return name; }
        set 
        {
            if (!string.IsNullOrEmpty(value))
                name = value;
        }
    }

    private int age;
    public int Age
    {
        get { return age; }
        private set
        {
            if (value > 0)
                age = value;
        }
    }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public void CelebrateBirthday()
    {
        Age++;
    }
}

В этом примере мы используем свойства C# (Name и Age), чтобы обеспечить более тонкий контроль над тем, как внешний код может взаимодействовать с полями класса. Age устанавливается как приватное свойство, что означает, что его нельзя изменить извне класса напрямую, а Name требует непустой строки для установки.

Читайте так же  Методы в C# - простое объяснение с примерами

Заключение

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