Interfejs administratora
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 105 z 110.
Wyzwanie
ŁatwyW poprzedniej lekcji dodano funkcję wyszukiwania do klasy Library. Teraz utworzymy interfejs administratora, który pozwoli użytkownikom z odpowiednimi uprawnieniami zarządzać zapasami biblioteki — dodawać nowe książki i usuwać istniejące.
Wprowadzisz nową klasę Admin i rozbudujesz klasę Library o funkcje administracyjne:
book.dart: Pozostaw istniejącą klasęBookbez zmian.user.dart: Pozostaw istniejącą klasęUserbez zmian.admin.dart: Utwórz nową klasęAdmin, która reprezentuje administratorów biblioteki. Administrator maid(String) iname(String). NadpisztoString(), aby zwracałaAdmin [id]: name.library.dart: Dodaj funkcje administracyjne do klasyLibrary:- Dodaj listę do przechowywania zarejestrowanych administratorów
registerAdmin(Admin admin)— dodaje administratora do bibliotekiaddBookAsAdmin(String adminId, Book book)— jeśli administrator istnieje, dodaje książkę i wyświetlaadminId added "title". Jeśli administrator nie istnieje, wyświetlUnauthorized.removeBook(String adminId, String isbn)— jeśli administrator i książka istnieją, usuwa książkę z biblioteki i wyświetlaadminId removed "title". Jeśli administrator nie istnieje, wyświetlUnauthorized. Jeśli książka nie istnieje, wyświetlBook not found.getBookCount()— zwraca całkowitą liczbę książek w bibliotece
main.dart: Zademonstruj interfejs administratora. UtwórzLibraryi zarejestruj administratora (A001,Sarah Admin). Użyj konta administratora, aby dodać trzy książki:978-0-13-468599-1,The Pragmatic Programmer,David Thomas978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford978-0-13-235088-4,Clean Code,Robert Martin
Total books: X. Następnie spróbuj dodać książkę, używając niezarejestrowanego identyfikatora administratoraA999. Usuń drugą książkę, używając zarejestrowanego administratora. Wyświetl końcową liczbę książek.
Oczekiwany wynik:
A001 added "The Pragmatic Programmer"
A001 added "JavaScript: The Good Parts"
A001 added "Clean Code"
Total books: 3
Unauthorized
A001 removed "JavaScript: The Good Parts"
Total books: 2Spróbuj swoich sił
import 'book.dart';
import 'user.dart';
import 'library.dart';
import 'admin.dart';
void main() {
// TODO: Utwórz Library
// TODO: Utwórz i zarejestruj administratora (A001, Sarah Admin)
// TODO: Użyj administratora, aby dodać trzy książki:
// - 978-0-13-468599-1, The Pragmatic Programmer, David Thomas
// - 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
// - 978-0-13-235088-4, Clean Code, Robert Martin
// TODO: Wypisz liczbę książek w postaci "Total books: X"
// TODO: Spróbuj dodać książkę, używając identyfikatora niezarejestrowanego administratora A999
// TODO: Usuń drugą książkę (978-0-596-51774-8), używając zarejestrowanego administratora
// TODO: Wypisz końcową 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