Menu
CoddyTech

Ringkasan: Koleksi Kustom

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

challenge icon

Tantangan

Mudah

Mari buat sistem ScoreBoard yang melacak skor pemain dan menunjukkan cara berbagai method khusus bekerja bersama untuk menghasilkan class yang rapi dan profesional!

Kamu akan menyusun kodemu ke dalam dua file:

  • score_board.dart: Buat class Player dan class ScoreBoard yang bekerja bersama untuk mengelola skor permainan.

    Class Player milikmu harus memiliki name (String) dan score (int). Class ini perlu:

    • Mengimplementasikan Comparable<Player> agar pemain dapat diurutkan berdasarkan skor secara menurun, dari yang tertinggi
    • Melakukan override terhadap == dan hashCode agar dua pemain dengan nama yang sama dianggap setara, terlepas dari skornya
    • Melakukan override terhadap toString() agar mengembalikan: [name]: [score] points

    Class ScoreBoard milikmu harus menyimpan list pemain dan menyediakan:

    • method addPlayer(Player player) yang menambahkan pemain hanya jika pemain tersebut belum ada, gunakan implementasi kesetaraanmu!
    • method call() yang tidak menerima argumen dan mengembalikan salinan list pemain yang sudah diurutkan berdasarkan skor, dari yang tertinggi
    • Melakukan override terhadap toString() untuk menampilkan semua pemain tanpa diurutkan, satu pemain per baris, dengan header ScoreBoard: pada baris pertama
  • main.dart: Impor file papan skormu dan tunjukkan cara semua method khusus ini bekerja bersama:
    • Buat sebuah ScoreBoard
    • Tambahkan pemain berikut: Alice dengan 150, Bob dengan 200, Charlie dengan 175
    • Coba tambahkan Alice lagi dengan skor 999, penambahan ini seharusnya ditolak karena duplikat
    • Cetak papan skor menggunakan toString() miliknya
    • Cetak satu baris kosong
    • Cetak Rankings:
    • Panggil papan skor seperti sebuah fungsi untuk mendapatkan peringkat yang sudah diurutkan, lalu cetak setiap pemain

Tantangan ini menggabungkan toString() untuk menampilkan data, == dan hashCode untuk mendeteksi duplikat, compareTo() untuk mengurutkan, serta call() untuk antarmuka callable yang praktis!

Output yang diharapkan:

ScoreBoard:
Alice: 150 points
Bob: 200 points
Charlie: 175 points

Rankings:
Bob: 200 points
Charlie: 175 points
Alice: 150 points

Coba sendiri

import 'score_board.dart';

void main() {
  // TODO: Buat ScoreBoard

  // TODO: Tambahkan pemain: Alice (150), Bob (200), Charlie (175)

  // TODO: Coba tambahkan Alice lagi dengan skor 999 (harus ditolak karena duplikat)

  // TODO: Cetak papan skor menggunakan toString()

  // TODO: Cetak baris kosong

  // TODO: Cetak "Rankings:"

  // TODO: Panggil papan skor seperti fungsi untuk mendapatkan peringkat yang terurut, lalu cetak setiap pemain
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online