検索機能
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 104/110。
チャレンジ
簡単前のレッスンでは、貸出と返却の機能を備えた Library クラスを構築しました。次は、ユーザーがライブラリのコレクションから本を探せるように、検索機能を追加しましょう。
Library クラスを強化するために、ユーザーが本を見つけるのに役立つ3つの新しい検索メソッドを追加します。
book.dart: 既存のBookクラスは変更せずにそのまま使用します。user.dart: 既存のUserクラスは変更せずにそのまま使用します。library.dart:Libraryクラスに3つの検索メソッドを追加します:searchByTitle(String query)- タイトルにクエリ文字列が含まれるすべての本を含むList<Book>を返します(大文字と小文字を区別しません)。searchByAuthor(String query)- 著者名にクエリ文字列が含まれるすべての本を含むList<Book>を返します(大文字と小文字を区別しません)。getAvailableBooks()- 現在貸出可能な本のみを含むList<Book>を返します。
main.dart: 検索機能を実演します。Libraryを作成し、4冊の本を追加します: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)を登録し、1冊目の本を借りさせます。その後、以下の操作を行います:- タイトルに
pragmaticが含まれる本を検索し、Title search 'pragmatic': X foundと出力します(Xは件数)。 - 著者
davidで本を検索し、Author search 'david': X foundと出力します。 - 利用可能な本を取得し、
Available books: Xと出力します。 - 利用可能な各本をそれぞれの行に出力します。
期待される出力:
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 Hunt自分で試してみよう
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// Library を作成する
Library library = Library();
// TODO: 図書館に4冊の本を追加する:
// 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: ユーザーを登録する (U001, Alice)
// TODO: ユーザーに1冊目の本を借りさせる
// TODO: タイトルに 'pragmatic' を含む本を検索する
// Print: Title search 'pragmatic': X found
// TODO: 著者 'david' で本を検索する
// Print: Author search 'david': X found
// TODO: 利用可能な本を取得し、次のように表示する: Available books: X
// TODO: 利用可能な各本をそれぞれの行に表示する
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ