Menu
Coddy logo textTech

Riepilogo - Collezione personalizzata

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 75 di 110.

challenge icon

Sfida

Facile

Costruiamo un sistema ScoreBoard che tiene traccia dei punteggi dei giocatori e mostra come i metodi speciali collaborano per creare una classe rifinita e professionale!

Organizzerai il codice in due file:

  • score_board.dart: crea una classe Player e una classe ScoreBoard che collaborano per gestire i punteggi del gioco.

    La tua classe Player dovrebbe avere un name (String) e uno score (int). Deve:

    • Implementare Comparable<Player> in modo che i giocatori possano essere ordinati per punteggio in ordine decrescente (dal più alto al più basso)
    • Sovrascrivere == e hashCode affinché due giocatori con lo stesso nome siano considerati uguali (indipendentemente dal punteggio)
    • Sovrascrivere toString() affinché restituisca: [name]: [score] points

    La tua classe ScoreBoard dovrebbe memorizzare un elenco di giocatori e fornire:

    • Un metodo addPlayer(Player player) che aggiunge un giocatore solo se non esiste già (usa la tua implementazione dell'uguaglianza!)
    • Un metodo call() che non accetta argomenti e restituisce una copia ordinata dell'elenco dei giocatori (ordinata per punteggio, dal più alto al più basso)
    • Sovrascrivere toString() per visualizzare tutti i giocatori (non ordinati), uno per riga, con l'intestazione ScoreBoard: sulla prima riga
  • main.dart: importa il file del tabellone dei punteggi e mostra come collaborano tutti questi metodi speciali:
    • Crea un ScoreBoard
    • Aggiungi questi giocatori: Alice con 150, Bob con 200, Charlie con 175
    • Prova ad aggiungere di nuovo Alice con il punteggio 999 (dovrebbe essere rifiutata perché è un duplicato)
    • Stampa il tabellone dei punteggi usando il suo toString()
    • Stampa una riga vuota
    • Stampa Rankings:
    • Richiama il tabellone dei punteggi come una funzione per ottenere la classifica ordinata, poi stampa ogni giocatore

Questa sfida riunisce toString() per la visualizzazione, == e hashCode per rilevare i duplicati, compareTo() per l'ordinamento e call() per un'interfaccia richiamabile semplice e intuitiva!

Risultato atteso:

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

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

Provalo tu

import 'score_board.dart';

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

  // TODO: Aggiungi i giocatori: Alice (150), Bob (200), Charlie (175)

  // TODO: Prova ad aggiungere di nuovo Alice con un punteggio di 999 (dovrebbe essere rifiutata perché già presente)

  // TODO: Stampa la classifica usando il suo metodo toString()

  // TODO: Stampa una riga vuota

  // TODO: Stampa "Rankings:"

  // TODO: Chiama la classifica come una funzione per ottenere le posizioni ordinate, poi stampa ogni giocatore
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online