Suchfunktion
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 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