Menu
Coddy logo textTech

Resumen - Colección personalizada

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 75 de 110.

challenge icon

Desafío

Fácil

¡Vamos a construir un sistema ScoreBoard que rastree las puntuaciones de los jugadores y demuestre cómo los métodos especiales trabajan juntos para crear una clase pulida y profesional!

Organizarás tu código en dos archivos:

  • score_board.dart: Crea una clase Player y una clase ScoreBoard que trabajen juntas para gestionar las puntuaciones del juego.

    Tu clase Player debe tener un name (String) y un score (int). Debe:

    • Implementar Comparable<Player> para que los jugadores puedan ser ordenados por puntuación en orden descendente (la más alta primero)
    • Sobrescribir == y hashCode para que dos jugadores con el mismo nombre sean considerados iguales (independientemente de la puntuación)
    • Sobrescribir toString() para devolver: [name]: [score] points

    Tu clase ScoreBoard debe almacenar una lista de jugadores y proporcionar:

    • Un método addPlayer(Player player) que añada un jugador solo si aún no existe (¡usa tu implementación de igualdad!)
    • Un método call() que no reciba argumentos y devuelva una copia ordenada de la lista de jugadores (ordenada por puntuación, la más alta primero)
    • Sobrescribir toString() para mostrar todos los jugadores (sin ordenar), uno por línea, con el encabezado ScoreBoard: en la primera línea
  • main.dart: Importa tu archivo de tablero de puntuaciones y demuestra cómo todos estos métodos especiales funcionan juntos:
    • Crea un ScoreBoard
    • Añade estos jugadores: Alice con 150, Bob con 200, Charlie con 175
    • Intenta añadir a Alice de nuevo con la puntuación 999 (debería ser rechazada por ser un duplicado)
    • Imprime el tablero de puntuaciones usando su toString()
    • Imprime una línea vacía
    • Imprime Rankings:
    • Llama al tablero de puntuaciones como una función para obtener las clasificaciones ordenadas, luego imprime cada jugador

¡Este desafío reúne toString() para la visualización, == y hashCode para la detección de duplicados, compareTo() para el ordenamiento y call() para una interfaz llamable limpia!

Salida esperada:

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

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

Pruébalo tú mismo

import 'score_board.dart';

void main() {
  // TODO: Crear un ScoreBoard

  // TODO: Añadir jugadores: Alice (150), Bob (200), Charlie (175)

  // TODO: Intentar añadir a Alice de nuevo con una puntuación de 999 (debe ser rechazada por duplicado)

  // TODO: Imprimir el marcador usando su toString()

  // TODO: Imprimir una línea vacía

  // TODO: Imprimir "Rankings:"

  // TODO: Llamar al marcador como una función para obtener las clasificaciones ordenadas, luego imprimir cada jugador
}

Todas las lecciones de Programación Orientada a Objetos