Administrationsoberfläche
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 105 von 110.
Aufgabe
EinfachIn der vorherigen Lektion hast du deiner Library-Klasse eine Suchfunktion hinzugefügt. Jetzt erstellen wir eine Admin-Oberfläche, mit der privilegierte Benutzer den Bestand der Bibliothek verwalten können – neue Bücher hinzufügen und vorhandene entfernen.
Du führst eine neue Admin-Klasse ein und erweiterst deine Library um administrative Funktionen:
book.dart: Behalte deine vorhandeneBook-Klasse unverändert bei.user.dart: Behalte deine vorhandeneUser-Klasse unverändert bei.admin.dart: Erstelle eine neueAdmin-Klasse, die Bibliotheksadministratoren repräsentiert. Ein Administrator hat eineid(String) und einenname(String). ÜberschreibetoString(), sodassAdmin [id]: namezurückgegeben wird.library.dart: Füge deinerLibrary-Klasse administrative Funktionen hinzu:- Füge eine Liste hinzu, in der registrierte Administratoren gespeichert werden
registerAdmin(Admin admin)– fügt einen Administrator zur Bibliothek hinzuaddBookAsAdmin(String adminId, Book book)– wenn der Administrator existiert, wird das Buch hinzugefügt undadminId added "title"ausgegeben. Wenn der Administrator nicht existiert, gibUnauthorizedaus.removeBook(String adminId, String isbn)– wenn der Administrator und das Buch existieren, wird das Buch aus der Bibliothek entfernt undadminId removed "title"ausgegeben. Wenn der Administrator nicht existiert, gibUnauthorizedaus. Wenn das Buch nicht existiert, gibBook not foundaus.getBookCount()– gibt die Gesamtzahl der Bücher in der Bibliothek zurück
main.dart: Demonstriere die Admin-Oberfläche. Erstelle eineLibraryund registriere einen Administrator (A001,Sarah Admin). Verwende den Administrator, um drei Bücher hinzuzufügen: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: Xaus. Versuche anschließend, mit der nicht registrierten Administrator-IDA999ein Buch hinzuzufügen. Entferne das zweite Buch mit dem registrierten Administrator. Gib die endgültige Anzahl der Bücher aus.
Erwartete Ausgabe:
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: 2Probier es selbst
import 'book.dart';
import 'user.dart';
import 'library.dart';
import 'admin.dart';
void main() {
// TODO: Erstelle eine Library
// TODO: Erstelle und registriere einen Admin (A001, Sarah Admin)
// TODO: Verwende den Admin, um drei Bücher hinzuzufügen:
// - 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: Gib die Anzahl der Bücher als "Total books: X" aus
// TODO: Versuche, ein Buch mit einer nicht registrierten Admin-ID A999 hinzuzufügen
// TODO: Entferne das zweite Buch (978-0-596-51774-8) unter Verwendung des registrierten Admins
// TODO: Gib die endgültige Anzahl der Bücher aus
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienBibliotheken & ImportsEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenInstanzvariablenGrundlagen von KonstruktorenRückblick – Einfacher Taschenrechner4Null-Sicherheit
Einführung in die Null-SicherheitNullable vs. Non-NullableDie Operatoren ? und !Late-Schlüsselwort und Null-SicherheitNull-bewusste OperatorenNull-Sicherheit in KlassenRückblick – Benutzers профilsystem7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrere InterfacesZusammenfassung – Formrechner10Collections & Generics
Übersicht über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische EinschränkungenIterable & IteratorRückblick – Generischer Speicher13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungErweiterungsmethodenAufrufbare KlassenVersiegelte Klassen (Dart 3)Records (Dart 3)Muster & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
StandardkonstruktorBenannte KonstruktorenInitialisierungslistenKonstantenkonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenRückblick – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _-Präfix-KonventionBibliotheksweite SichtbarkeitTiefergehende Getter & SetterInformationsverbergungRückblick – Studierendendaten8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas Schlüsselwort „on“ in MixinsMixin vs. VererbungMixin vs. SchnittstelleRückblick – Tiersystem11Spezielle Methoden
toString()-ÜberschreibunghashCode- & ==-ÜberschreibungComparable-Schnittstellecall()-MethodenoSuchMethod-ÜberschreibungWiederholung – Benutzerdefinierte Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFabrikmusterBeobachtermusterStrategiemuster17Abschließende Herausforderungen
E-Learning-PlattformBankingsystemSpielcharaktersystemFahrzeugvermietung3Klassen-Eigenschaften
Instanz- vs. statische MemberFinal- und Const-FelderLate-VariablenStatische Methoden und FelderGetter und SetterRückblick – Bankkontoverwaltung6Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungDie Annotation @overrideDas Schlüsselwort final für KlassenKonstruktoren und VererbungZusammenfassung – Mitarbeiterhierarchie9Polymorphismus
Grundlagen des PolymorphismusPolymorphismus über InterfacesLaufzeit-TypüberprüfungDie Operatoren is & asCovariant-SchlüsselwortZusammenfassung – ZahlungsprozessorÜbe selbstständig: Online-Dart-Compiler