Menu
Coddy logo textTech

Zusammenfassung – Eigene Collection

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

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein ScoreBoard-System bauen, das Spielerstände verfolgt und demonstriert, wie spezielle Methoden zusammenarbeiten, um eine ausgefeilte, professionelle Klasse zu erstellen!

Sie werden Ihren Code in zwei Dateien organisieren:

  • score_board.dart: Erstellen Sie eine Player-Klasse und eine ScoreBoard-Klasse, die zusammenarbeiten, um Spielergebnisse zu verwalten.

    Ihre Player-Klasse sollte einen name (String) und einen score (int) haben. Sie muss:

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

    Ihre ScoreBoard-Klasse sollte eine Liste von Spielern speichern und Folgendes bieten:

    • Eine addPlayer(Player player)-Methode, die einen Spieler nur hinzufügt, wenn er noch nicht existiert (nutzen Sie Ihre 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) anzuzeigen, einen pro Zeile, mit der Kopfzeile ScoreBoard: in der ersten Zeile
  • main.dart: Importieren Sie Ihre Scoreboard-Datei und demonstrieren Sie, wie all diese speziellen Methoden zusammenarbeiten:
    • Erstellen Sie ein ScoreBoard
    • Fügen Sie diese Spieler hinzu: Alice mit 150, Bob mit 200, Charlie mit 175
    • Versuchen Sie, Alice erneut mit der Punktzahl 999 hinzuzufügen (dies sollte als Duplikat abgelehnt werden)
    • Geben Sie das Scoreboard mit seiner toString()-Methode aus
    • Geben Sie eine Leerzeile aus
    • Geben Sie Rankings: aus
    • Rufen Sie das Scoreboard wie eine Funktion auf, um sortierte Ranglisten zu erhalten, und geben Sie dann jeden Spieler aus

Diese Herausforderung führt toString() für die Anzeige, == und hashCode für die Duplikaterkennung, compareTo() für die Sortierung und call() für eine saubere aufrufbare Schnittstelle zusammen!

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