Методы
Часть раздела Объектно-ориентированное программирование путешествия по Dart на Coddy — урок 6 из 110.
Методы — это функции, которые принадлежат классу. Они определяют поведение или действия, которые могут выполнять объекты.
Вот пример класса с методами:
class Calculator {
void greet() {
print('Hello! I am a calculator.');
}
int add(int a, int b) {
return a + b;
}
int multiply(int x, int y) {
int result = x * y;
print('$x x $y = $result');
return result;
}
}Сигнатуры методов в Dart всегда включают тип возвращаемого значения. Используйте void, когда метод ничего не возвращает.
Создайте объект калькулятора:
Calculator myCalc = Calculator();Вызовите метод, которому не требуются параметры:
myCalc.greet();Вызывайте методы с параметрами и получайте возвращаемое значение:
int sumResult = myCalc.add(5, 3);
print(sumResult);Вызовите метод, который одновременно выводит и возвращает значение:
int product = myCalc.multiply(4, 7);Вывод:
Hello! I am a calculator.
8
4 x 7 = 28Методы могут:
- Иметь тип возвращаемого значения, например
int add(int a, int b) - Возвращать значения с помощью
return - Выводить результат напрямую с помощью
print() - Быть
void, если они ничего не возвращают
Ключевой момент: Вызывайте методы объектов с помощью оператора «точка»: object.methodName(args).
Задание
ЛегкоСоздайте класс BankAccount в файле bank_account.dart со следующими элементами:
- Переменная экземпляра
double balance, установленная в0 - Метод
deposit, который принимаетdouble amountи добавляет его кbalance - Метод
withdraw, который принимаетdouble amountи вычитает его изbalance - Метод
getBalance, который возвращает текущийbalance
Затем в файле driver.dart создайте аккаунт, внесите 100, снимите 30 и выведите баланс в формате: 'Current balance: $[balance]'
Шпаргалка
Методы — это функции, которые принадлежат классу и определяют действия, которые могут выполнять объекты.
Определяйте методы с типом возвращаемого значения. Используйте void, если метод ничего не возвращает:
class Calculator {
void greet() {
print('Hello! I am a calculator.');
}
int add(int a, int b) {
return a + b;
}
int multiply(int x, int y) {
int result = x * y;
print('$x x $y = $result');
return result;
}
}Вызывайте методы объектов, используя оператор «точка»:
Calculator myCalc = Calculator();
myCalc.greet(); // Без параметров
int sumResult = myCalc.add(5, 3); // С параметрами, сохранение возвращаемого значения
print(sumResult);
int product = myCalc.multiply(4, 7); // Выводит в консоль и возвращает значениеМетоды могут иметь типы возвращаемых значений, возвращать значения с помощью return, выводить данные напрямую с помощью print() или иметь тип void, если они ничего не возвращают.
Попробуйте сами
import 'bank_account.dart';
void main() {
BankAccount myAccount = BankAccount();
myAccount.balance = 0;
// TODO: Внести 100
// TODO: Снять 30
// TODO: Вывести баланс в формате: 'Current balance: $[balance]'
// Подсказка: используйте .toInt() для баланса, чтобы вывод был чистым
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыБиблиотеки и импортВведение в ООПКлассы и объектыКлючевое слово thisМетодыПеременные экземпляраОсновы конструкторовИтоги — Простой калькулятор4Null-безопасность
Введение в Null-безопасностьNullable и Non-Nullable типыОператоры ? и !Ключевое слово Late и Null-безопасностьNull-aware операторыNull-безопасность в классахИтоги — Система профилей пользователей7Абстрактные классы и интерфейсы
Абстрактные классыАбстрактные методыИнтерфейсы в DartНеявные интерфейсыРеализация против наследованияМножественные интерфейсыИтоги — Калькулятор фигур10Коллекции и обобщения
Обзор List, Set, MapТипобезопасные коллекцииОбобщенные классыОбобщенные методыОграничения обобщенийIterable и IteratorИтоги: Обобщенное хранилище13Продвинутые концепции ООП
Композиция против наследованияМетоды расширенияВызываемые классыЗапечатанные классы (Dart 3)Записи (Dart 3)Паттерны и сопоставление (3.0)Перечисления с методами16Проект: Управление библиотекой
Обзор проектаКлассы Book и User2Конструкторы в Dart
Конструктор по умолчаниюИменованные конструкторыСписки инициализацииКонстантные конструкторыФабричные конструкторыПеренаправляющие конструкторыИтоги — Shape Builder5Инкапсуляция
Публичные и приватные членыСоглашение о префиксе _Приватность на уровне библиотекГеттеры и сеттеры: подробный разборСкрытие данныхИтоги — Записи о студентах8Mixins
Введение в MixinsСоздание MixinsИспользование нескольких MixinsКлючевое слово on в MixinsMixin и наследованиеMixin и интерфейсИтоги: Система животных11Специальные методы
Переопределение toString()Переопределение hashCode и ==Интерфейс ComparableМетод call()Переопределение noSuchMethodПовторение — Пользовательская коллекция14Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy3Свойства классов
Члены экземпляра и статические членыПоля Final и ConstПеременные LateСтатические методы и поляГеттеры и сеттерыИтоги — Менеджер банковского счета6Наследование
Основы наследованияКлючевое слово superПереопределение методовАннотация @overrideКлючевое слово final для классовКонструкторы и наследованиеИтоги: Иерархия сотрудников9Полиморфизм
Основы полиморфизмаПолиморфизм через интерфейсыПроверка типов во время выполненияОператоры is и asКлючевое слово covariantИтоги — Обработчик платежей12Асинхронное ООП
Futures и async/awaitОсновы StreamsКонтроллеры StreamАсинхронные конструкторыАсинхронность в методах классовИтоги — Data Fetcher15Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикПаттерн Репозиторий