Klasy książek i użytkowników
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 102 z 110.
Wyzwanie
ŁatwyW poprzedniej lekcji utworzyłeś klasę Book z podstawowymi właściwościami i metodą toString(). Teraz czas rozbudować system biblioteczny, dodając klasę User, która będzie reprezentować członków biblioteki mogących wypożyczać książki.
Musisz utworzyć nowy plik i zaktualizować istniejące pliki:
book.dart: Rozbuduj istniejącą klasęBook, dodając właściwośćisAvailable(boolean), której wartością domyślną jesttrue. Będzie ona określać, czy można wypożyczyć książkę.user.dart: Utwórz nową klasęUser, która będzie reprezentować członków biblioteki. Każdy użytkownik powinien miećid(String),name(String) oraz listęborrowedBookszawierającą obiektyBook. Dodaj konstruktor inicjalizujący id i name oraz ustawiający pustą listę wypożyczonych książek. NadpisztoString(), aby zwracała formatUser [id]: name (X books borrowed), gdzie X to liczba wypożyczonych książek.main.dart: Zaimportuj pliki book i user. Utwórz książkę o ISBN978-0-13-468599-1, tytuleThe Pragmatic Programmeri autorzeDavid Thomas. Utwórz użytkownika o idU001i imieniuAlice Johnson. Wypisz książkę, a następnie informację, czy jest dostępna, używając formatuAvailable: truelubAvailable: false. Wypisz użytkownika. Następnie dodaj książkę do listy wypożyczonych książek użytkownika, ustawisAvailableksiążki nafalsei ponownie wypisz użytkownika, aby pokazać zaktualizowaną liczbę książek.
W ten sposób określisz relację między książkami a użytkownikami, którą wykorzystasz przy implementacji pełnego systemu wypożyczania w następnej lekcji!
Oczekiwany wynik:
[978-0-13-468599-1] The Pragmatic Programmer by David Thomas
Available: true
User U001: Alice Johnson (0 books borrowed)
User U001: Alice Johnson (1 books borrowed)Spróbuj swoich sił
import 'book.dart';
// TODO: Zaimportuj user.dart
void main() {
// TODO: Utwórz książkę o numerze ISBN '978-0-13-468599-1', tytule 'The Pragmatic Programmer' i autorze 'David Thomas'
// TODO: Utwórz użytkownika z identyfikatorem 'U001' i imieniem i nazwiskiem 'Alice Johnson'
// TODO: Wyświetl książkę
// TODO: Wyświetl informację, czy książka jest dostępna, w formacie: Available: true/false
// TODO: Wyświetl użytkownika
// TODO: Dodaj książkę do listy borrowedBooks użytkownika
// TODO: Ustaw isAvailable książki na false
// TODO: Wyświetl użytkownika ponownie, aby pokazać zaktualizowaną liczbę książek
}
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