Menu
Coddy logo textTech

Podsumowanie — własna kolekcja

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 75 z 110.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system ScoreBoard, który śledzi wyniki graczy i pokazuje, jak metody specjalne współpracują ze sobą, tworząc dopracowaną, profesjonalną klasę!

Podzielisz kod na dwa pliki:

  • score_board.dart: Utwórz klasę Player i klasę ScoreBoard, które współpracują ze sobą, aby zarządzać wynikami gry.

    Twoja klasa Player powinna mieć name (String) i score (int). Powinna:

    • Implementować Comparable<Player>, aby można było sortować graczy według wyniku w kolejności malejącej (od najwyższego)
    • Nadpisywać == i hashCode, aby dwóch graczy o tym samym imieniu było uznawanych za równych (niezależnie od wyniku)
    • Nadpisywać toString(), aby zwracała: [name]: [score] points

    Twoja klasa ScoreBoard powinna przechowywać listę graczy i udostępniać:

    • Metodę addPlayer(Player player), która dodaje gracza tylko wtedy, gdy jeszcze nie istnieje (użyj swojej implementacji równości!)
    • Metodę call(), która nie przyjmuje argumentów i zwraca posortowaną kopię listy graczy (posortowaną według wyniku, od najwyższego)
    • Nadpisaną metodę toString(), która wyświetla wszystkich graczy (bez sortowania), po jednym w każdym wierszu, z nagłówkiem ScoreBoard: w pierwszym wierszu
  • main.dart: Zaimportuj plik z tablicą wyników i pokaż, jak wszystkie te metody specjalne współpracują ze sobą:
    • Utwórz ScoreBoard
    • Dodaj następujących graczy: Alice z wynikiem 150, Bob z wynikiem 200, Charlie z wynikiem 175
    • Spróbuj ponownie dodać Alice z wynikiem 999 (powinien zostać odrzucony jako duplikat)
    • Wyświetl tablicę wyników za pomocą jej toString()
    • Wyświetl pusty wiersz
    • Wyświetl Rankings:
    • Wywołaj tablicę wyników jak funkcję, aby uzyskać posortowany ranking, a następnie wyświetl każdego gracza

To wyzwanie łączy w sobie toString() do wyświetlania, == i hashCode do wykrywania duplikatów, compareTo() do sortowania oraz call(), aby zapewnić przejrzysty interfejs, który można wywoływać jak funkcję!

Oczekiwany wynik:

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

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

Spróbuj swoich sił

import 'score_board.dart';

void main() {
  // TODO: Utwórz ScoreBoard

  // TODO: Dodaj graczy: Alice (150), Bob (200), Charlie (175)

  // TODO: Spróbuj ponownie dodać Alice z wynikiem 999 (powinna zostać odrzucona jako duplikat)

  // TODO: Wyświetl tablicę wyników, używając jej metody toString()

  // TODO: Wyświetl pusty wiersz

  // TODO: Wyświetl "Rankings:"

  // TODO: Wywołaj tablicę wyników jak funkcję, aby uzyskać posortowany ranking, a następnie wyświetl każdego gracza
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online