Андрей Кейда
Андрей Кейда
(обновлено )
За все время: 12626 просмотров, 5060 посетителей.
За последние 30 дней: 41 просмотр, 20 посетителей.

Основы Dart 2.x (Классы и объекты)

Классы и объекты

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

void main (){ //Метод main, точка входа в программу Dart

ToyotaCars corolla = ToyotaCars(); // Создание объекта corolla класса ToyotaCars

// Изменяем данные объекта corolla

corolla.color = "Black";

corolla.vin_code = 236478;

// Вызов метода display() (тоесть происходит некое действие объекта corolla)

corolla.display();

}

class ToyotaCars{

String color; // Поле класса

int vin_code; // Ещё одно поле класса

void display(); { // Метод, который можно вызвать с помощью объекта данного класса

print("Color: $color VIN_CODE: $vin_code"); // Знак $ это интерполяция

}

}

Конструкторы

Кроме обычных методов, классы могут определять специальные методы, которые называются конструкторами. Конструкторы вызываются при создании нового объекта данного класса. Конструкторы выполняют инициализацию объекта.
Разберем 2-ю строчку кода:

ToyotaCars corolla = ToyotaCars();


Самое первое мы пишем имя класса ToyotaCars, далее имя создаваемого объекта corolla и через оператор присвоения (=) метод без параметров ToyotaCars() - он же и есть наш конструктор, который выполнить инициализацию нашего объекта corolla.

Конструктор с параметрами

Если необходимо что бы при создании объекта поля класса получали какие-то определенные значения тогда используется конструктор с параметрами:

void main (){

ToyotaCars auris = ToyotaCars("Yellow", 234453); //Определяем значения переменных

auris.display();

}

class ToyotaCars{

String color;

int vin_code;

ToyotaCars(String с, int v) //Определяем конструктор с параметрами

{

color = с;

vin_code = v;

}

void display(){

print("Color: $color VIN_CODE: $vin_code");

}

}


Ключевое слово this - всегда служит ссылкой на объект, для которого был вызван метод. Ключевое слово this можно использовать везде, где допускается ссылка на объект типа текущего класса.
Пример:

class ToyotaCars{

String color;

int vin_code;

ToyotaCars(String color, int vin_code)

{

this.color = color;

this.vin_code = vin_code;

}


Либо с помощью this, мы можем сократить определение конструктора:

class ToyotaCars{

String color;

int vin_code;

ToyotaCars(this.color, this.vin_code);

void display(){

print("Color: $color VIN_CODE: $vin_code");

}

}

Именованные конструкторы

По умолчанию мы можем определить только один общий конструктор. Если же нам необходимо использовать в классе сразу несколько конструкторов, тогда необходимо применять именованные конструкторы, это выглядит как дополнительное имя конструктору, через точку от имени класса.
Например:

void main (){

ToyotaCars corolla = ToyotaCars.corolla_only(); // Именованный конструктор.

corolla.display();

ToyotaCars auris = ToyotaCars.for_auris("Green", 334658); // Второй именованный конст.

auris.display();

}

class ToyotaCars{

String color;

int vin_code;

ToyotaCars.corolla_only(){

color = "Black";

vin_code = 784643;

}

ToyotaCars.for_auris(String c, int v){

color = c;

vin_code = v;

}

void display(){

print("Color: $color VIN_CODE: $vin_code");

}

}

Подборка заметок