Menu
CoddyTech

Penimpaan ToString()

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 38 dari 70.

Setiap class di C# mewarisi object, yang menyediakan method ToString(). Secara default, method ini mengembalikan nama tipe yang sepenuhnya memenuhi syarat, yang tidak terlalu berguna saat kamu ingin melihat data sebenarnya dari suatu object.

Kamu dapat mengganti ToString() agar mengembalikan representasi string yang bermakna dari object-mu:

public class Person
{
    public string Name { get; }
    public int Age { get; }
    
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
    
    public override string ToString()
    {
        return $"{Name} ({Age} years old)";
    }
}

Sekarang, saat kamu mencetak atau menggabungkan object Person, kamu mendapatkan output yang mudah dibaca:

Person p = new Person("Alice", 30);
Console.WriteLine(p);  // Alice (30 tahun)

Tanpa override, ini akan mencetak sesuatu seperti MyNamespace.Person. Kata kunci override diperlukan karena kamu mengganti method yang diwarisi dari object. Ini sangat berguna untuk debugging dan pencatatan log, saat kamu membutuhkan gambaran cepat tentang keadaan object.

challenge icon

Tantangan

Mudah

Mari buat class Book yang memberikan representasi string yang bermakna saat dicetak, sehingga proses debug dan menampilkan informasi buku menjadi jauh lebih intuitif.

Kamu akan mengatur kodemu dalam dua file:

  • Book.cs: Buat class Book di namespace Library yang merepresentasikan buku beserta detail pentingnya. Bukumu harus memiliki:
    • Tiga property hanya-baca: Title (string), Author (string), dan Year (int)
    • Constructor yang menerima title, author, dan year dalam urutan tersebut
    • Method ToString() yang dioverride dan mengembalikan string berformat: "{Title}" by {Author} ({Year})
    Perhatikan, title harus diapit tanda kutip ganda pada output!
  • Program.cs: Di file utama, buat object Book menggunakan nilai input dan cetak object tersebut secara langsung. Berkat override ToString() milikmu, meneruskan object buku ke Console.WriteLine() akan otomatis menampilkan informasi berformat, bukan nama tipe.

Kamu akan menerima tiga input:

  • Judul buku (string)
  • Nama penulis (string)
  • Tahun terbit (bilangan bulat)

Cetak object buku secara langsung menggunakan Console.WriteLine().

Contohnya, jika inputnya adalah The Great Gatsby, F. Scott Fitzgerald, dan 1925, outputnya akan berupa:

"The Great Gatsby" by F. Scott Fitzgerald (1925)

Keistimewaannya adalah kamu tidak memanggil ToString() secara eksplisit. Saat kamu meneruskan object ke Console.WriteLine(), method ToString() milik object tersebut akan dipanggil secara otomatis. Override-mu membuat output ini berguna, bukan sekadar menampilkan Library.Book!

Coba sendiri

using System;
using Library;

class Program
{
    public static void Main(string[] args)
    {
        // Baca input
        string title = Console.ReadLine();
        string author = Console.ReadLine();
        int year = Convert.ToInt32(Console.ReadLine());

        // TODO: Buat object Book menggunakan nilai input

        // TODO: Cetak object Book secara langsung menggunakan Console.WriteLine()
    }
}
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 C# online