Suchfunktionalität
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy — Lektion 104 von 110.
Aufgabe
EinfachIn der vorherigen Lektion haben Sie eine Library-Klasse mit Ausleih- und Rückgabefunktionalität erstellt. Jetzt fügen wir Suchfunktionen hinzu, damit Benutzer Bücher in der Sammlung der Bibliothek finden können.
Sie werden Ihre Library-Klasse um drei neue Suchmethoden erweitern, die Benutzern helfen, Bücher zu entdecken:
book.dart: Lassen Sie Ihre bestehendeBook-Klasse unverändert.user.dart: Lassen Sie Ihre bestehendeUser-Klasse unverändert.library.dart: Fügen Sie IhrerLibrary-Klasse drei Suchmethoden hinzu:searchByTitle(String query)- gibt eineList<Book>zurück, die alle Bücher enthält, deren Titel den Abfragestring enthält (unabhängig von Groß- und Kleinschreibung)searchByAuthor(String query)- gibt eineList<Book>zurück, die alle Bücher enthält, deren Autorenname den Abfragestring enthält (unabhängig von Groß- und Kleinschreibung)getAvailableBooks()- gibt eineList<Book>zurück, die nur Bücher enthält, die derzeit zum Ausleihen verfügbar sind
main.dart: Demonstrieren Sie die Suchfunktionalität. Erstellen Sie eineLibraryund fügen Sie vier Bücher hinzu: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 Martin978-0-20-161622-4,The Pragmatic Programmer,Andrew Hunt
U001,Alice) und lassen Sie ihn das erste Buch ausleihen. Dann:- Suchen Sie nach Büchern mit
pragmaticim Titel und geben SieTitle search 'pragmatic': X foundaus, wobei X die Anzahl ist - Suchen Sie nach Büchern des Autors
davidund geben SieAuthor search 'david': X foundaus - Rufen Sie die verfügbaren Bücher ab und geben Sie
Available books: Xaus - Geben Sie jedes verfügbare Buch in einer eigenen Zeile aus
Erwartete Ausgabe:
U001 borrowed "The Pragmatic Programmer"
Title search 'pragmatic': 2 found
Author search 'david': 1 found
Available books: 3
[978-0-596-51774-8] JavaScript: The Good Parts by Douglas Crockford
[978-0-13-235088-4] Clean Code by Robert Martin
[978-0-20-161622-4] The Pragmatic Programmer by Andrew HuntProbier es selbst
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// Erstelle eine Library
Library library = Library();
// TODO: Füge der Bibliothek vier Bücher hinzu:
// 1. 978-0-13-468599-1, The Pragmatic Programmer, David Thomas
// 2. 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
// 3. 978-0-13-235088-4, Clean Code, Robert Martin
// 4. 978-0-20-161622-4, The Pragmatic Programmer, Andrew Hunt
// TODO: Registriere einen Benutzer (U001, Alice)
// TODO: Lass den Benutzer das erste Buch ausleihen
// TODO: Suche nach Büchern mit 'pragmatic' im Titel
// Print: Title search 'pragmatic': X found
// TODO: Suche nach Büchern des Autors 'david'
// Print: Author search 'david': X found
// TODO: Rufe die verfügbaren Bücher ab und gib aus: Available books: X
// TODO: Gib jedes verfügbare Buch in einer eigenen Zeile aus
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienBibliotheken & ImportsEinführung in die OOPKlassen vs. ObjekteDas this-SchlüsselwortMethodenInstanzvariablenKonstruktor-GrundlagenWiederholung – Einfacher Taschenrechner4Null-Sicherheit
Einführung in Null-SicherheitNullable vs. Non-NullableDie ? und ! OperatorenLate-Schlüsselwort & Null-SicherheitNull-aware OperatorenNull-Sicherheit in KlassenZusammenfassung – Benutzerprofil-System7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrfache InterfacesRückblick – Shape Calculator10Collections & Generics
Überblick über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische ConstraintsIterable & IteratorZusammenfassung – Generische Speicherung13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungExtension MethodsCallable ClassesSealed Classes (Dart 3)Records (Dart 3)Patterns & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
Standard-KonstruktorBenannte KonstruktorenInitialisierungslistenKonstante KonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenZusammenfassung – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _ Präfix-KonventionSichtbarkeit auf Library-EbeneGetter & Setter im DetailInformation HidingRückblick – Schülerdatensätze8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas on-Schlüsselwort in MixinsMixin vs. VererbungMixin vs. InterfaceZusammenfassung - Tiersystem11Spezielle Methoden
toString() überschreibenhashCode & == überschreibenComparable-Interfacecall()-MethodenoSuchMethod überschreibenZusammenfassung – Eigene Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster3Klasseneigenschaften
Instanz- vs. statische MemberFinal & Const FelderLate-VariablenStatische Methoden & FelderGetter und SetterZusammenfassung – Bankkonto-Manager6Vererbung
Grundlagen der VererbungDas super-SchlüsselwortMethoden überschreibenDie @override-AnnotationDas final-Klassen-SchlüsselwortKonstruktoren & VererbungRückblick – Mitarbeiter-Hierarchie9Polymorphismus
Polymorphismus-GrundlagenPolymorphismus über InterfacesTypprüfung zur LaufzeitDie is & as OperatorenDas covariant SchlüsselwortZusammenfassung – Payment Processor