Menu
Coddy logo textTech

Başlatıcı Listeleri

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 12 / 110.

Başlatıcı listesi, bir yapıcıda iki nokta üst üste işaretinden sonra, yapıcı gövdesinden önce görünen koddur. Yapıcı gövdesi çalıştırılmadan önce çalışır ve örnek değişkenlerini başlatmak için kullanılır.

Başlatıcı listelerini önceki derslerde zaten gördün:

Point.origin() : x = 0, y = 0;

İki noktadan sonraki kısım (x = 0, y = 0) başlatıcı listesidir. Birden çok başlatma işlemi virgüllerle ayrılır.

Başlatıcı listeleri, kurucu gövdesi çalışmadan önce ayarlanması gereken final değişkenleriyle çalışırken çok önemlidir:

class Circle {
  final double radius;
  final double area;

  Circle(double r)
      : radius = r,
        area = 3.14159 * r * r;
}

Circle c = Circle(5);
print(c.radius); // 5.0
print(c.area);   // 78.53975

Başlatıcı listesi, kurucu parametrelerini atamadan önce hesaplamalar veya dönüşümler de gerçekleştirebilir. Bu, nesne oluşturma sırasında değerler türetmeniz veya verileri doğrulamanız gerektiğinde kullanışlıdır.

Kısa this. söz dizimini bir başlatıcı listesiyle birleştirebilirsiniz:

class Rectangle {
  final double width;
  final double height;
  final double area;

  Rectangle(this.width, this.height)
      : area = width * height;
}

Rectangle rect = Rectangle(4, 5);
print(rect.area); // 20.0

Burada, width ve height kısa yol ile atanırken, area bu değerler kullanılarak başlatıcı listesinde hesaplanır.

challenge icon

Görev

Kolay

Nesneler oluşturulduğunda türetilmiş değerleri hesaplamak için başlatıcı listelerini kullanan bir kutu boyut hesaplayıcısı oluşturalım.

Kodunuzu iki dosyada düzenleyeceksiniz:

  • box.dart: Boyutları ve otomatik olarak hesaplanan özellikleri olan 3B bir kutuyu temsil eden bir Box sınıfı tanımlayın. Sınıfınız şunlara sahip olmalıdır:
    • Üç final double alanı: length, width ve height
    • Hesaplanan iki final double alanı: volume ve surfaceArea
    • length, width ve height değerlerini this. kısa gösterimini kullanarak alan ve volume (length × width × height) ile surfaceArea (2 × (length×width + width×height + height×length)) değerlerini hesaplamak için başlatıcı listesi kullanan bir kurucu
    • Kutu bilgilerini yazdıran bir display() yöntemi
  • main.dart: Kutu sınıfınızı içe aktarın ve iki kutu oluşturun:
    • Boyutları 3.0, 4.0, 5.0 olan bir kutu
    • Boyutları 2.0, 2.0, 2.0 olan bir kutu
    Her kutu için display() yöntemini listelenen sırayla çağırın.

display() yöntemi tam olarak şu biçimde yazdırmalıdır:

Box: [length]x[width]x[height] | Volume: [volume] | Surface: [surfaceArea]

Beklenen çıktı:

Box: 3.0x4.0x5.0 | Volume: 60.0 | Surface: 94.0
Box: 2.0x2.0x2.0 | Volume: 8.0 | Surface: 24.0

Kendin dene

import 'box.dart';

void main() {
  // YAPILACAK: 3.0, 4.0, 5.0 boyutlarında bir kutu oluşturun
  
  // YAPILACAK: 2.0, 2.0, 2.0 boyutlarında bir kutu oluşturun
  
  // YAPILACAK: Her kutu üzerinde sırasıyla display() fonksiyonunu çağırın
  
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi