Menu
CoddyTech

Override toString()

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 70 dari 110.

Saat kamu mencetak object di Dart, kamu mungkin melihat sesuatu seperti Instance of 'Person' - tidak terlalu membantu. Ini terjadi karena setiap class mewarisi method toString() bawaan dari Object yang hanya mengembalikan nama class.

Dengan melakukan override pada toString(), kamu bisa memberikan representasi string yang bermakna untuk object-mu:

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)
}

Tanpa override, print(person) akan menghasilkan output Instance of 'Person'. Dengan override, kamu mendapatkan informasi berguna tentang keadaan object tersebut.

Method toString() dipanggil secara otomatis setiap kali Dart perlu mengonversi object-mu menjadi string, dalam pernyataan print(), interpolasi string, atau saat menggabungkannya dengan string lain:

var message = 'User: $person';  // toString() dipanggil secara otomatis
print('Found: ' + person.toString());  // Pemanggilan secara eksplisit

toString() yang diimplementasikan dengan baik akan memudahkan proses debug karena kamu bisa memeriksa nilai object dengan cepat selama pengembangan.

challenge icon

Tantangan

Mudah

Mari kita buat sistem katalog produk yang menampilkan informasi setiap produk dalam format yang rapi dan mudah dibaca saat dicetak. Kamu akan berlatih menimpa method toString() agar object-mu lebih mudah di-debug dan lebih ramah pengguna.

Kamu akan menyusun kodemu ke dalam dua file:

  • product.dart: Buat class Product yang mewakili suatu barang di toko. Produkmu harus memiliki name (String), price (double), dan quantity (int). Timpa method toString() agar mengembalikan string berformat persis seperti ini: Product(name: [name], price: $[price], qty: [quantity])
  • main.dart: Impor file produkmu dan tunjukkan bagaimana override toString() membuat pencetakan object jauh lebih berguna. Buat tiga produk dan cetak untuk melihat representasi string kustommu:
    • Produk bernama 'Laptop' dengan harga 999.99 dan jumlah 5
    • Produk bernama 'Mouse' dengan harga 29.5 dan jumlah 50
    • Produk bernama 'Keyboard' dengan harga 75.0 dan jumlah 30
    Tunjukkan juga interpolasi string dengan mencetak pesan yang menyertakan salah satu produkmu: Featured: [product] menggunakan produk Laptop.

Perhatikan bagaimana mencetak setiap produk secara langsung menampilkan informasi yang bermakna, bukan pesan yang tidak membantu, Instance of 'Product'. Method toString()-mu dipanggil secara otomatis, baik dalam pernyataan print() maupun saat menggunakan interpolasi string.

Output yang diharapkan:

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)

Coba sendiri

import 'product.dart';

void main() {
  // TODO: Buat tiga instance Product:
  // 1. Laptop, harga: 999.99, jumlah: 5
  // 2. Mouse, harga: 29.5, jumlah: 50
  // 3. Keyboard, harga: 75.0, jumlah: 30

  // TODO: Cetak setiap produk (toString() akan dipanggil secara otomatis)

  // TODO: Cetak pesan unggulan menggunakan interpolasi string
  // Format: Featured: [produk laptop]
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online