Podsumowanie — własna kolekcja
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 75 z 110.
Wyzwanie
ŁatwyZbudujmy 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ęPlayeri klasęScoreBoard, które współpracują ze sobą, aby zarządzać wynikami gry.Twoja klasa
Playerpowinna miećname(String) iscore(int). Powinna:- Implementować
Comparable<Player>, aby można było sortować graczy według wyniku w kolejności malejącej (od najwyższego) - Nadpisywać
==ihashCode, 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
ScoreBoardpowinna 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łówkiemScoreBoard:w pierwszym wierszu
- Implementować
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:
Alicez wynikiem150,Bobz wynikiem200,Charliez wynikiem175 - Spróbuj ponownie dodać
Alicez wynikiem999(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
- Utwórz
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 pointsSpró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
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online