Menu
Coddy logo textTech

Wiederholung – Benutzerdefinierte Collection

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 75 von 110.

challenge icon

Aufgabe

Einfach

Lass uns ein ScoreBoard-System erstellen, das Spielerst Punktzahlen verfolgt und zeigt, wie spezielle Methoden zusammenarbeiten, um eine ausgefeilte, professionelle Klasse zu erstellen!

Du organisierst deinen Code in zwei Dateien:

  • score_board.dart: Erstelle eine Player-Klasse und eine ScoreBoard-Klasse, die zusammenarbeiten, um Spielpunktzahlen zu verwalten.

    Deine Player-Klasse sollte über einen name (String) und einen score (int) verfügen. Sie muss:

    • Comparable<Player> implementieren, damit Spieler nach Punktzahl in absteigender Reihenfolge sortiert werden können (höchste zuerst)
    • == und hashCode überschreiben, sodass zwei Spieler mit demselben Namen als gleich gelten (unabhängig von der Punktzahl)
    • toString() überschreiben, sodass [name]: [score] points zurückgegeben wird

    Deine ScoreBoard-Klasse sollte eine Liste von Spielern speichern und Folgendes bereitstellen:

    • Eine addPlayer(Player player)-Methode, die einen Spieler nur hinzufügt, wenn er noch nicht existiert (verwende deine Gleichheitsimplementierung!)
    • Eine call()-Methode, die keine Argumente entgegennimmt und eine sortierte Kopie der Spielerliste zurückgibt (sortiert nach Punktzahl, höchste zuerst)
    • toString() überschreiben, um alle Spieler (unsortiert), einen pro Zeile, mit dem Header ScoreBoard: in der ersten Zeile anzuzeigen
  • main.dart: Importiere deine Scoreboard-Datei und zeige, wie all diese speziellen Methoden zusammenarbeiten:
    • Erstelle ein ScoreBoard
    • Füge diese Spieler hinzu: Alice mit 150, Bob mit 200, Charlie mit 175
    • Versuche, Alice erneut mit der Punktzahl 999 hinzuzufügen (sie sollte als Duplikat abgelehnt werden)
    • Gib das Scoreboard mit seinem toString() aus
    • Gib eine leere Zeile aus
    • Gib Rankings: aus
    • Rufe das Scoreboard wie eine Funktion auf, um sortierte Ranglisten zu erhalten, und gib anschließend jeden Spieler aus

Diese Herausforderung verbindet toString() für die Anzeige, == und hashCode zur Erkennung von Duplikaten, compareTo() zum Sortieren und call() für eine übersichtliche aufrufbare Schnittstelle!

Erwartete Ausgabe:

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

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

Probier es selbst

import 'score_board.dart';

void main() {
  // TODO: Erstelle ein ScoreBoard

  // TODO: Füge Spieler hinzu: Alice (150), Bob (200), Charlie (175)

  // TODO: Versuche Alice erneut mit der Punktzahl 999 hinzuzufügen (sollte als Duplikat abgelehnt werden)

  // TODO: Gib das Scoreboard mit seiner toString() Methode aus

  // TODO: Gib eine Leerzeile aus

  // TODO: Gib "Rankings:" aus

  // TODO: Rufe das Scoreboard wie eine Funktion auf, um sortierte Rankings zu erhalten, und gib dann jeden Spieler aus
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler