Menu
Coddy logo textTech

toString() Geçersiz Kılma

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

Dart'ta bir nesneyi yazdırdığınızda, Instance of 'Person' gibi pek yardımcı olmayan bir şey görebilirsiniz. Bu durum, her sınıfın Object sınıfından sadece sınıf adını döndüren varsayılan bir toString() metodunu devralması nedeniyle olur.

toString() metodunu geçersiz kılarak nesnelerinizin anlamlı bir dize gösterimini sağlayabilirsiniz:

class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  @override
  String toString() {
    return 'Person(name: $name, age: $age)';
  }
}

void main() {
  var person = Person('Alice', 30);
  print(person);  // Person(name: Alice, age: 30)
}

Geçersiz kılma olmadan print(person), Instance of 'Person' çıktısını verirdi. Bununla birlikte, nesnenin durumu hakkında yararlı bilgiler elde edersiniz.

Dart'ın nesnenizi bir dizeye dönüştürmesi gerektiği her durumda -print() ifadelerinde, dize enterpolasyonunda veya diğer dizelerle birleştirme yaparken- toString() yöntemi otomatik olarak çağrılır:

var message = 'User: $person';  // toString() otomatik olarak çağrılır
print('Found: ' + person.toString());  // Açıkça çağırma

İyi uygulanmış bir toString(), geliştirme sırasında nesne değerlerini hızlıca incelemenize olanak tanıyarak hata ayıklamayı çok daha kolay hale getirir.

challenge icon

Görev

Kolay

Her ürünün yazdırıldığında bilgilerini temiz ve okunabilir bir biçimde gösterdiği bir ürün kataloğu sistemi oluşturalım. Nesnelerini daha kolay hata ayıklanabilir ve kullanıcı dostu hâle getirmek için toString() metodunu geçersiz kılma pratiği yapacaksın.

Kodunu iki dosyada düzenleyeceksin:

  • product.dart: Bir mağazadaki ürünü temsil eden bir Product sınıfı oluştur. Ürünün name (String), price (double) ve quantity (int) özellikleri olmalı. toString() metodunu, tam olarak şu biçimde biçimlendirilmiş bir dize döndürecek şekilde geçersiz kıl: Product(name: [name], price: $[price], qty: [quantity])
  • main.dart: Ürün dosyanı içe aktar ve toString() geçersiz kılmasının nesneleri yazdırmayı nasıl çok daha kullanışlı hâle getirdiğini göster. Üç ürün oluştur ve özel dize gösterimini uygulamada görmek için bunları yazdır:
    • 'Laptop' adlı, fiyatı 999.99 ve miktarı 5 olan bir ürün
    • 'Mouse' adlı, fiyatı 29.5 ve miktarı 50 olan bir ürün
    • 'Keyboard' adlı, fiyatı 75.0 ve miktarı 30 olan bir ürün
    Ayrıca ürünlerinden birini içeren bir mesaj yazdırarak dize enterpolasyonunu göster: Laptop ürününü kullanarak Featured: [product].

Her ürünü doğrudan yazdırmanın, yararsız Instance of 'Product' mesajı yerine anlamlı bilgiler gösterdiğine dikkat et. toString() metodun hem print() ifadelerinde hem de dize enterpolasyonu kullanılırken otomatik olarak çağrılır.

Beklenen çıktı:

Product(name: Laptop, price: $999.99, qty: 5)
Product(name: Mouse, price: $29.5, qty: 50)
Product(name: Keyboard, price: $75.0, qty: 30)
Featured: Product(name: Laptop, price: $999.99, qty: 5)

Kendin dene

import 'product.dart';

void main() {
  // TODO: Üç Product örneği oluşturun:
  // 1. Laptop - price: 999.99, quantity: 5
  // 2. Mouse - price: 29.5, quantity: 50
  // 3. Keyboard - price: 75.0, quantity: 30

  // TODO: Her bir ürünü yazdırın (toString() otomatik olarak çağrılacaktır)

  // TODO: String interpolation kullanarak öne çıkan bir mesaj yazdırın
  // Format: Featured: [laptop product]
}
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