Menu
Coddy logo textTech

Recapitulação - Coleção Personalizada

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy — lição 75 de 110.

challenge icon

Desafio

Fácil

Vamos construir um sistema de ScoreBoard que rastreia as pontuações dos jogadores e demonstra como métodos especiais trabalham juntos para criar uma classe polida e profissional!

Você organizará seu código em dois arquivos:

  • score_board.dart: Crie uma classe Player e uma classe ScoreBoard que trabalham juntas para gerenciar as pontuações do jogo.

    Sua classe Player deve ter um name (String) e score (int). Ela precisa:

    • Implementar Comparable<Player> para que os jogadores possam ser ordenados por pontuação em ordem decrescente (maior primeiro)
    • Sobrescrever == e hashCode para que dois jogadores com o mesmo nome sejam considerados iguais (independentemente da pontuação)
    • Sobrescrever toString() para retornar: [name]: [score] points

    Sua classe ScoreBoard deve armazenar uma lista de jogadores e fornecer:

    • Um método addPlayer(Player player) que adiciona um jogador apenas se ele ainda não existir (use sua implementação de igualdade!)
    • Um método call() que não recebe argumentos e retorna uma cópia ordenada da lista de jogadores (ordenada por pontuação, maior primeiro)
    • Sobrescrever toString() para exibir todos os jogadores (não ordenados), um por linha, com o cabeçalho ScoreBoard: na primeira linha
  • main.dart: Importe seu arquivo de placar e demonstre como todos esses métodos especiais funcionam juntos:
    • Crie um ScoreBoard
    • Adicione estes jogadores: Alice com 150, Bob com 200, Charlie com 175
    • Tente adicionar Alice novamente com a pontuação 999 (ela deve ser rejeitada como duplicata)
    • Imprima o placar usando seu toString()
    • Imprima uma linha vazia
    • Imprima Rankings:
    • Chame o placar como uma função para obter as classificações ordenadas e, em seguida, imprima cada jogador

Este desafio reúne toString() para exibição, == e hashCode para detecção de duplicatas, compareTo() para ordenação e call() para uma interface chamável limpa!

Saída esperada:

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

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

Experimente você mesmo

import 'score_board.dart';

void main() {
  // TODO: Criar um ScoreBoard

  // TODO: Adicionar jogadores: Alice (150), Bob (200), Charlie (175)

  // TODO: Tentar adicionar Alice novamente com a pontuação 999 (deve ser rejeitada como duplicata)

  // TODO: Imprimir o placar usando seu toString()

  // TODO: Imprimir uma linha vazia

  // TODO: Imprimir "Rankings:"

  // TODO: Chamar o placar como uma função para obter as classificações ordenadas e, em seguida, imprimir cada jogador
}

Todas as lições de Programação Orientada a Objetos