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

¡Construyamos un sistema ScoreBoard que registre las puntuaciones de los jugadores y demuestre cómo funcionan juntos los métodos especiales 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). Necesita:

    • Implementar Comparable<Player> para que los jugadores se puedan ordenar por puntuación en orden descendente (de mayor a menor)
    • Redefinir == y hashCode para que dos jugadores con el mismo nombre se consideren iguales (independientemente de la puntuación)
    • Redefinir toString() para que devuelva: [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 acepte argumentos y devuelva una copia ordenada de la lista de jugadores (ordenada por puntuación, de mayor a menor)
    • Redefinir 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 del marcador y demuestra cómo funcionan juntos todos estos métodos especiales:
    • Crea un ScoreBoard
    • Añade estos jugadores: Alice con 150, Bob con 200, Charlie con 175
    • Intenta añadir Alice de nuevo con una puntuación de 999 (debe rechazarse como duplicado)
    • Imprime el marcador usando su toString()
    • Imprime una línea vacía
    • Imprime Rankings:
    • Llama al marcador como si fuera una función para obtener las clasificaciones ordenadas y, después, imprime cada jugador

¡Este desafío reúne toString() para la visualización, == y hashCode para detectar duplicados, compareTo() para ordenar y call() para ofrecer una interfaz invocable y sencilla!

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

Practica por tu cuenta: Compilador de Dart online