Ответ
Класс — это базовый строительный блок ООП, выступающий в роли шаблона (blueprint) для создания объектов. Он инкапсулирует:
- Данные (состояние): в виде полей и свойств.
- Поведение (операции): в виде методов.
Пример моделирования сущности "Счет в банке" на C#:
public class BankAccount
{
// Поле (private - состояние инкапсулировано)
private decimal _balance;
private readonly string _accountNumber;
// Конструктор для инициализации объекта
public BankAccount(string accountNumber, decimal initialBalance)
{
_accountNumber = accountNumber;
_balance = initialBalance >= 0 ? initialBalance : 0;
}
// Свойства для контролируемого доступа к данным (инкапсуляция)
public string AccountNumber => _accountNumber; // Только для чтения
public decimal Balance => _balance; // Только для чтения
// Методы, определяющие поведение
public void Deposit(decimal amount)
{
if (amount > 0)
{
_balance += amount;
LogTransaction($"Внесено: {amount}");
}
}
public bool Withdraw(decimal amount)
{
if (amount > 0 && _balance >= amount)
{
_balance -= amount;
LogTransaction($"Снято: {amount}");
return true;
}
return false;
}
// Приватный вспомогательный метод (деталь реализации скрыта)
private void LogTransaction(string message)
{
Console.WriteLine($"Счет {_accountNumber}: {message}. Баланс: {_balance}");
}
}
// Использование класса
var account = new BankAccount("ACC123", 1000); // Создание объекта (экземпляра)
account.Deposit(500);
bool success = account.Withdraw(200); // success = true
Console.WriteLine(account.Balance); // 1300
Связь с принципами ООП:
- Инкапсуляция: Поле
_balanceприватное, изменение состояния возможно только через публичные методыDeposit/Withdraw, которые обеспечивают валидацию. - Абстракция: Пользователь класса видит только публичный интерфейс (методы), скрыта внутренняя логика (например,
LogTransaction). - Наследование (можно расширить):
class SavingsAccount : BankAccount { ... }. - Полиморфизм: Объекты производных классов могут использоваться вместо объектов базового класса.
Видео-ответы
▶
▶
▶
▶
▶
▶