Menu
Coddy logo textTech

Récapitulatif - Collection personnalisée

Fait partie de la section Programmation Orientée Objet du Journey Dart de Coddy — leçon 75 sur 110.

challenge icon

Défi

Facile

Construisons un système ScoreBoard qui suit les scores des joueurs et démontre comment les méthodes spéciales fonctionnent ensemble pour créer une classe soignée et professionnelle !

Vous organiserez votre code en deux fichiers :

  • score_board.dart : Créez une classe Player et une classe ScoreBoard qui travaillent ensemble pour gérer les scores de jeu.

    Votre classe Player doit avoir un name (String) et un score (int). Elle doit :

    • Implémenter Comparable<Player> afin que les joueurs puissent être triés par score par ordre décroissant (le plus élevé en premier)
    • Surcharger == et hashCode pour que deux joueurs ayant le même nom soient considérés comme égaux (quel que soit le score)
    • Surcharger toString() pour retourner : [name]: [score] points

    Votre classe ScoreBoard doit stocker une liste de joueurs et fournir :

    • Une méthode addPlayer(Player player) qui ajoute un joueur uniquement s'il n'existe pas déjà (utilisez votre implémentation de l'égalité !)
    • Une méthode call() qui ne prend aucun argument et retourne une copie triée de la liste des joueurs (triée par score, le plus élevé en premier)
    • Surcharger toString() pour afficher tous les joueurs (non triés), un par ligne, avec l'en-tête ScoreBoard: sur la première ligne
  • main.dart : Importez votre fichier de tableau des scores et démontrez comment toutes ces méthodes spéciales fonctionnent ensemble :
    • Créez un ScoreBoard
    • Ajoutez ces joueurs : Alice avec 150, Bob avec 200, Charlie avec 175
    • Essayez d'ajouter Alice à nouveau avec le score 999 (cela devrait être rejeté comme un doublon)
    • Affichez le tableau des scores en utilisant son toString()
    • Affichez une ligne vide
    • Affichez Rankings:
    • Appelez le tableau des scores comme une fonction pour obtenir les classements triés, puis affichez chaque joueur

Ce défi rassemble toString() pour l'affichage, == et hashCode pour la détection des doublons, compareTo() pour le tri, et call() pour une interface appelable propre !

Sortie attendue :

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

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

Essayez vous-même

import 'score_board.dart';

void main() {
  // TODO: Créer un ScoreBoard

  // TODO: Ajouter les joueurs : Alice (150), Bob (200), Charlie (175)

  // TODO: Essayer d'ajouter Alice à nouveau avec le score 999 (devrait être rejeté comme doublon)

  // TODO: Afficher le tableau des scores en utilisant son toString()

  // TODO: Afficher une ligne vide

  // TODO: Afficher "Rankings:"

  // TODO: Appeler le tableau des scores comme une fonction pour obtenir les classements triés, puis afficher chaque joueur
}

Toutes les leçons de Programmation Orientée Objet