1/Путь к первому мобильному приложению. Часть 1.9 - Изучаем язык Dart: ООП. Методы, геттеры (get) и сеттеры (set)

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

// Методы
class CompetitorWait {
  int number;
  int timestamp;
  
  CompetitorWait ( int number , [ int timestamp = 0 ] ) {
    this.number = number;
    this.timestamp = timestamp;
  }
  // Метод
  int getTimestamp ( ) {
    return this.timestamp;
  }
  void setTimestamp ( int n ) {
    this.timestamp = n;
  }
  
  @override
  String toString ( ) {
    return 'Number = [$number] Start = [$timestamp]';
  }
}
// Программа
void main ( ) {
  // Методы
  var sportsmen = CompetitorWait ( 12 , 15124241421 );
  print ( sportsmen.getTimestamp ( ) ); // 15124241421
  sportsmen.setTimestamp ( 15124241422 );
  print ( sportsmen.getTimestamp ( ) ); // 15124241422
}

Геттеры и сеттеры позволяют производить вычисления и задавать значения через некоторые абстрактные поля, в частности в примере ниже мы не указываем поля right и bottom, но на них установлены get и set операции, которые зависят и влияют на другие поля.

// геттеры и сеттеры
class Rectangle {
  double left, top, width, height;

  Rectangle(this.left, this.top, this.width, this.height);

  double get right => left + width;
  set right(double value) => left = value - width;
  double get bottom => top + height;
  set bottom(double value) => top = value - height;
}
// Программа
void main ( ) {
  // геттеры и сеттеры
  var rect = Rectangle(3, 4, 20, 15);
  print(rect.right); // 23
  print(rect.left); // 3
  rect.right = 12;
  print(rect.left); // -8
  print(rect.bottom); // 19
  print(rect.top); // 4
  rect.bottom = 20;
  print(rect.top); // 5
}