Funkcja wyszukiwania
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 104 z 110.
Wyzwanie
ŁatwyW poprzedniej lekcji utworzyłeś klasę Library z funkcjonalnością wypożyczania i zwracania książek. Teraz dodajmy możliwość wyszukiwania, aby użytkownicy mogli znajdować książki w zbiorach biblioteki.
Rozbudujesz klasę Library o trzy nowe metody wyszukiwania, które pomogą użytkownikom odkrywać książki:
book.dart: Pozostaw istniejącą klasęBookbez zmian.user.dart: Pozostaw istniejącą klasęUserbez zmian.library.dart: Dodaj trzy metody wyszukiwania do klasyLibrary:searchByTitle(String query)- zwracaList<Book>zawierającą wszystkie książki, których tytuł zawiera ciąg zapytania (bez rozróżniania wielkości liter)searchByAuthor(String query)- zwracaList<Book>zawierającą wszystkie książki, których nazwisko autora zawiera ciąg zapytania (bez rozróżniania wielkości liter)getAvailableBooks()- zwracaList<Book>zawierającą tylko książki, które są obecnie dostępne do wypożyczenia
main.dart: Zademonstruj działanie wyszukiwania. Utwórz klasęLibraryi dodaj cztery 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 Martin978-0-20-161622-4,The Pragmatic Programmer,Andrew Hunt
U001,Alice) i wypożycz mu pierwszą książkę. Następnie:- Wyszukaj książki, których tytuł zawiera
pragmatic, i wypiszTitle search 'pragmatic': X found, gdzie X to liczba wyników - Wyszukaj książki autorstwa
davidi wypiszAuthor search 'david': X found - Pobierz dostępne książki i wypisz
Available books: X - Wypisz każdą dostępną książkę w osobnym wierszu
Oczekiwany wynik:
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 HuntSpróbuj swoich sił
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// Utwórz obiekt Library
Library library = Library();
// TODO: Dodaj cztery książki do biblioteki:
// 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: Zarejestruj użytkownika (U001, Alice)
// TODO: Niech użytkownik wypożyczy pierwszą książkę
// TODO: Wyszukaj książki z 'pragmatic' w tytule
// Wypisz: Title search 'pragmatic': znaleziono X
// TODO: Wyszukaj książki autora 'david'
// Wypisz: Author search 'david': znaleziono X
// TODO: Pobierz dostępne książki i wypisz: Available books: X
// TODO: Wypisz każdą dostępną książkę w osobnym wierszu
}
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