TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #169 656
Привет! Это Анна, Friflex Flutter Team Lead👋

Продолжаем разбирать основные принципы объектно-ориентированного программирования. В предыдущих постах мы уже поговорили о наследовании и инкапсуляции. Сегодня рассмотрим еще один принцип — абстракцию.

Абстракция как принцип ООП подразумевает выделение только самых важных методов и полей объекта, при этом все детали внутренней специфической реализации скрыты. В таком подходе разработчик создает некоторый интерфейс, абстрактный класс, который описывает только необходимые извне свойства.

Чем помогает абстракция?
1. Упрощает работу с кодом. Код становится более структурированным и понятным для восприятия
2. Позволяет обезопасить реализации. Все специфические детали реализации скрыты от внешнего воздействия. Это позволяет их сохранить в первозданном виде и снизить вероятность проблем по месту использования
3. Дает возможность безопасно масштабировать проект. Абстракция позволяет снизить зависимость некоторых модулей кода, что упрощает его расширение

Чтобы еще лучше понять абтракцию, можно провести аналогию со стиральной машиной — человек выбирает режим кнопками на панели, а машина уже самостоятельно пошагово выполняет тот или иной заданный алгоритм.

Подведем итог в виде простого примера реализации абстракции в Dart-коде.
У нас есть задача создать абстракцию оплаты и две реализаци — оплаты по карте и наличными. В самом простом виде получим такой результат.

/// Абстрактный класс — интерфейс оплаты
abstract class Payment {
void pay(double amount);
}

/// Реализация оплаты картой
class CardPayment implements Payment {
@override
void pay(double amount) {
final fee = _calculateFee(amount);
print(
'Оплата $amount руб. с помощью карты. Комиссия составила $fee руб. Итого — ${amount + fee} руб.',
);
}

/// Расчет комиссии за оплату картой - 2%
double _calculateFee(double amount) {
return amount * 0.02;
}
}

/// Реализация оплаты наличными
class CashPayment implements Payment {
@override
void pay(double amount) {
print('Оплата $amount руб. наличными');
}
}

void main() {
final Payment payment1 = CardPayment();
final Payment payment2 = CashPayment();

payment1.pay(
500,
); // Оплата 500 руб. с помощью карты. Комиссия составила 10 руб. Итого — 510 руб.
payment2.pay(200); // Оплата 200 руб. наличными
}


❤️ —
если было полезно
  • ❤ 18
  • ❤‍🔥 4
  • 🔥 2
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →