# 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:

```dart
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:

```dart
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:

```dart
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:

```dart
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...
  }
}
```

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dart.bayramalacam.com/siniflar-ve-nesneler-classes-and-objects/metodlar-methods.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
