Создание класса в Dart
Для создания класса используется ключевое слово class, за которым следует имя класса. Например, создадим класс User для описания пользователя:
class User {
String name;
int age;
bool isHappy;
List<String> hobbies;
}
Внутри класса определяются поля (характеристики объекта). Каждое поле описывает некоторую характеристику, например, имя (name), возраст (age), уровень счастья (isHappy) и список хобби (hobbies). Типы данных для полей указываются явно (например, String, int, bool, List<String>). Использование явного указания типа данных является общепринятой практикой в Dart. Можно использовать var или dynamic, но явное указание типа предпочтительнее.
Создание объектов и присваивание значений
Создадим объект класса User с именем bob:
var bob = User();
bob.name = 'Bob';
print(bob.name); // Выведет 'Bob'
Ключевое слово new при создании объекта в Dart является необязательным. Можно указать тип данных при создании объекта, например User bob = User();, но это избыточно, так как тип уже известен из присваивания.
Значения полей объекта можно устанавливать по отдельности или в одной строке:
var bob = User()
..name = 'Bob'
..age = 40;
Две точки (..) позволяют выполнять последовательные действия после создания объекта.
Конструкторы
Создадим конструктор, который принимает параметры для инициализации полей объекта. Для того, чтобы параметры были необязательными, используем квадратные скобки:
class User {
String name;
int age;
bool isHappy;
List<String> hobbies;
User({this.name, this.age, this.isHappy, this.hobbies});
}
Теперь при создании объекта можно передавать параметры:
var alex = User(name: 'Alex', age: 25, isHappy: false, hobbies: ['Basketball', 'Chess']);
Параметр name может быть как обязательным, так и необязательным, в зависимости от того, как будет определен конструктор.
Внутри конструктора значения параметров присваиваются полям объекта с помощью ключевого слова this.
Методы класса
Добавим метод info, который выводит информацию об объекте:
class User {
// ... (поля и конструктор) ...
void info() {
String happyStatus = isHappy ? 'happy' : 'not happy';
print('User: $name, $age year old, he is $happyStatus');
print('His hobbies:');
for (var hobby in hobbies) {
print(hobby);
}
}
}
Теперь можно вызвать метод info для вывода информации об объекте:
bob.info();
alex.info();
Работа с классами и объектами в Dart похожа на другие объектно-ориентированные языки программирования. В этом уроке мы рассмотрели создание классов, объектов, конструкторов и методов. Мы не углублялись в основы ООП, предполагая, что вы уже знакомы с базовыми концепциями. Главное – понять синтаксис Dart для работы с классами и объектами.