Menu
Coddy logo textTech

Özet - Özel Koleksiyon

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

challenge icon

Görev

Kolay

Oyuncu puanlarını takip eden ve özel metotların şık ve profesyonel bir sınıf oluşturmak için nasıl birlikte çalıştığını gösteren bir ScoreBoard sistemi kuralım!

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • score_board.dart: Oyun puanlarını yönetmek için birlikte çalışan bir Player sınıfı ve bir ScoreBoard sınıfı oluşturun.

    Player sınıfınız bir name (String) ve score (int) değerine sahip olmalıdır. Şunları yapması gerekir:

    • Oyuncuların puana göre azalan düzende (en yüksek puan en başta) sıralanabilmesi için Comparable<Player> arayüzünü uygulayın
    • Aynı isme sahip iki oyuncunun (puanlarına bakılmaksızın) eşit kabul edilmesi için == ve hashCode metotlarını geçersiz kılın (override)
    • toString() metodunu [name]: [score] points döndürecek şekilde geçersiz kılın

    ScoreBoard sınıfınız bir oyuncu listesi tutmalı ve şunları sağlamalıdır:

    • Bir oyuncuyu yalnızca zaten mevcut değilse ekleyen bir addPlayer(Player player) metodu (eşitlik uygulamanızı kullanın!)
    • Hiçbir argüman almayan ve oyuncu listesinin sıralanmış bir kopyasını (puana göre, en yüksekten en düşüğe) döndüren bir call() metodu
    • Tüm oyuncuları (sıralanmamış olarak), her satıra bir tane gelecek şekilde ve ilk satırda ScoreBoard: başlığıyla görüntülemek için toString() metodunu geçersiz kılın
  • main.dart: Skor tablosu dosyanızı içe aktarın ve tüm bu özel metotların birlikte nasıl çalıştığını gösterin:
    • Bir ScoreBoard oluşturun
    • Şu oyuncuları ekleyin: 150 puanla Alice, 200 puanla Bob, 175 puanla Charlie
    • Alice'i 999 puanla tekrar eklemeyi deneyin (kopya olduğu için reddedilmelidir)
    • Skor tablosunu toString() metodunu kullanarak yazdırın
    • Boş bir satır yazdırın
    • Rankings: yazdırın
    • Sıralanmış sıralamaları almak için skor tablosunu bir fonksiyon gibi çağırın, ardından her oyuncuyu yazdırın

Bu meydan okuma; görüntüleme için toString(), kopya tespiti için == ve hashCode, sıralama için compareTo() ve temiz bir çağrılabilir arayüz için call() metotlarını bir araya getiriyor!

Beklenen çıktı:

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

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

Kendin dene

import 'score_board.dart';

void main() {
  // YAPILACAK: Bir ScoreBoard oluşturun

  // YAPILACAK: Oyuncuları ekleyin: Alice (150), Bob (200), Charlie (175)

  // YAPILACAK: Alice'i 999 puanla tekrar eklemeyi deneyin (kopya olduğu için reddedilmelidir)

  // YAPILACAK: toString() metodunu kullanarak skor tablosunu yazdırın

  // YAPILACAK: Boş bir satır yazdırın

  // YAPILACAK: "Rankings:" yazdırın

  // YAPILACAK: Sıralanmış sıralamaları almak için skor tablosunu bir fonksiyon gibi çağırın, ardından her oyuncuyu yazdırın
}

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