Metodlar (Methods)

Metodlar, bir nesnenin davranışını sağlayan fonksiyonlardır.

Örnek Metodlar (Instance Methods)

Nesne üzerindeki örnek metodlar, örnek değişkenlere ve this anahtar kelimesine erişebilir. Aşağıdaki örnekteki digerineUzaklik() metodu bir örnek metod örneğidir:

import 'dart:math';

class Nokta {
  final double x;
  final double y;

  Nokta(this.x, this.y);

  double digerineUzaklik(Nokta diger) {
    var dx = x - diger.x;
    var dy = y - diger.y;
    return sqrt(dx * dx + dy * dy);
  }
}

Operatörler (Operators)

Operatörler, özel isimlere sahip örnek metodlardır. Dart, aşağıdaki isimlere sahip operatörleri tanımlamanıza izin verir:

< | + | | | >>> > | / | ^ | [] <= | ~/ | & | []= >= | * | << | ~ - | % | >> | ==

Not

Bazı operatörlerin, != gibi, listede olmadığını fark etmiş olabilirsiniz. Bu, onların sadece sözdizimsel şeker olduğu anlamına gelir. Örneğin, e1 != e2 ifadesi, !(e1 == e2) için sözdizimi şekeridir.

Aşağıdaki örnek, vektör toplama (+), çıkarma (-) ve eşitlik (==) operatörlerini tanımlar:

class Vektor {
  final int x, y;

  Vektor(this.x, this.y);

  Vektor operator +(Vektor v) => Vektor(x + v.x, y + v.y);
  Vektor operator -(Vektor v) => Vektor(x - v.x, y - v.y);

  @override
  bool operator ==(Object diger) =>
      diger is Vektor && x == diger.x && y == diger.y;

  @override
  int get hashCode => Object.hash(x, y);
}

void main() {
  final v = Vektor(2, 3);
  final w = Vektor(2, 2);

  assert(v + w == Vektor(4, 5));
  assert(v - w == Vektor(0, 1));
}

Getters ve Setters

Getters ve setters, bir nesnenin özelliklerine okuma ve yazma erişimi sağlayan özel metodlardır. Her örnek değişkeninin zaten varsayılan bir getter'ı ve uygunsa bir setter'ı vardır. Getters ve setters'ları kullanarak ek özellikler oluşturabilirsiniz. Bunun için get ve set anahtar kelimelerini kullanabilirsiniz:

class Dikdortgen {
  double sol, ust, genislik, yukseklik;

  Dikdortgen(this.sol, this.ust, this.genislik, this.yukseklik);

  // Hesaplanmış iki özellik tanımla: sag ve alt.
  double get sag => sol + genislik;
  set sag(double deger) => sol = deger - genislik;
  double get alt => ust + yukseklik;
  set alt(double deger) => ust = deger - yukseklik;
}

void main() {
  var dikdortgen = Dikdortgen(3, 4, 20, 15);
  assert(dikdortgen.sol == 3);
  dikdortgen.sag = 12;
  assert(dikdortgen.sol == -8);
}

Getters ve setters kullanarak, örnek değişkenleri metodlarla sarmadan başlayabilir ve daha sonra değiştirmeniz gerekmez.

Not

Artırma (++) gibi operatörler, beklenen şekilde çalışır, getter açıkça tanımlanmış olsa da olmasa da. Beklenmeyen yan etkileri önlemek için, operatör getter'ı tam olarak bir kez çağırır ve değerini geçici bir değişkende saklar.

Soyut Metodlar (Abstract Methods)

Örnek, getter ve setter metodları soyut olabilir, yani bir arabirim tanımlar ancak uygulamasını başka sınıflara bırakır. Soyut metodlar yalnızca soyut sınıflarda veya mixin'lerde bulunabilir. Bir metodun soyut olması için, bir metot gövdesi yerine bir noktalı virgül (;) kullanın:

abstract class Yapan {
  // Örnek değişkenleri ve metodları tanımla...

  void birSeyYap(); // Soyut bir metod tanımla.
}

class EtkiliYapan extends Yapan {
  void birSeyYap() {
    // Metodu burada soyut olmaktan çıkaracak bir uygulama sağla...
  }
}

Last updated