CodeBlanks Logo Icon CodeBlanks

Özet - Sınıflar

named, const ve factory constructor'ları birleştirerek bir Point sınıfı yazarsın.

Özet - Sınıflar

Bu grupta dört yapıcı türünü gördün: default, named, const ve factory. Hepsini bir Point sınıfında birleştireceğiz.

Bir Point sınıfı hem const Point(this.x, this.y) default constructor'ı, hem const Point.origin() : x = 0, y = 0 named constructor'ı, hem de factory Point.fromList(list) factory constructor'ı içerebilir. Her biri farklı bir başlatma senaryosu sunar; sınıf tek, başlatma yolları çoktur. Son adımda üçünü birden yazıp çağıracağız.

Uygulama Point'e named + const ekle

Point sınıfını tanımla; final double x ve final double y alanlarını ekle. const Point(this.x, this.y) default constructor'ını yaz. const Point.origin() : x = 0, y = 0 named constructor'ını ekle. main içinde const p = Point.origin(); ile örnek oluştur ve print(p.x) ile print(p.y) çağrılarını yap.

Başlangıç kodu

main.dart
// Point sınıfını tanımla
// final x ve y alanları, const Point ve const Point.origin() ekle

void main() {
  // const p = Point.origin() örneğini oluştur ve p.x ile p.y yazdır
}

Örnek çözüm

main.dart
// Point sınıfını tanımla
class Point {
  final double x;
  final double y;
  const Point(this.x, this.y);
  const Point.origin() : x = 0, y = 0;
}

void main() {
  const p = Point.origin();
  print(p.x);
  print(p.y);
}

Beklenen çıktı

0.0
0.0

Point'e factory ekle

Üçüncü adımda Point sınıfına bir factory constructor ekleyeceğiz. Bu factory, bir listeden örnek üretsin: factory Point.fromList(List<double> list) { return Point(list[0], list[1]); }.

Bu sayede kullanıcı hem Point(3, 4) ile doğrudan, hem Point.origin() ile sıfır noktası, hem Point.fromList([3, 4]) ile liste üzerinden örnek oluşturabilir. Üç yapıcı türü de aynı sınıfta yan yana durur ve her biri farklı bir kullanım senaryosuna hizmet eder. Factory'nin gövdesinde return zorunludur.

Uygulama Point'e fromList factory'sini ekle

Var olan Point sınıfını koru (final x, final y, const Point ve const Point.origin). Sınıfa factory Point.fromList(List<double> list) { return Point(list[0], list[1]); } factory constructor'ını ekle. main içinde var q = Point.fromList([3, 4]); ile örnek oluştur ve print(q.x) ile print(q.y) çağrılarını yap.

Başlangıç kodu

main.dart
class Point {
  final double x;
  final double y;
  const Point(this.x, this.y);
  const Point.origin() : x = 0, y = 0;
  // factory Point.fromList ekle
}

void main() {
  // Point.fromList([3, 4]) örneğini oluştur ve q.x ile q.y yazdır
}

Örnek çözüm

main.dart
class Point {
  final double x;
  final double y;
  const Point(this.x, this.y);
  const Point.origin() : x = 0, y = 0;
  factory Point.fromList(List<double> list) {
    return Point(list[0], list[1]);
  }
}

void main() {
  var q = Point.fromList([3, 4]);
  print(q.x);
  print(q.y);
}

Beklenen çıktı

3.0
4.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi constructor önbelleğe uygun?

  • default
  • factory Doğru cevap
  • const
  • named

Açıklama: factory, var olan örneği döndürebildiği için önbellek desenine uyar.

Orta seviye bölümündeki tüm dersler