Menu
Coddy logo textTech

検索機能

CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 104/110。

challenge icon

チャレンジ

簡単

前のレッスンでは、貸出と返却の機能を備えた 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 Thomas
    • 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
    • 978-0-13-235088-4, Clean Code, Robert Martin
    • 978-0-20-161622-4, The Pragmatic Programmer, Andrew Hunt
    ユーザー(U001, Alice)を登録し、1冊目の本を借りさせます。その後、以下の操作を行います:
    1. タイトルに pragmatic が含まれる本を検索し、Title search 'pragmatic': X found と出力します(Xは件数)。
    2. 著者 david で本を検索し、Author search 'david': X found と出力します。
    3. 利用可能な本を取得し、Available books: X と出力します。
    4. 利用可能な各本をそれぞれの行に出力します。

期待される出力:

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: 利用可能な各本をそれぞれの行に表示する
}

オブジェクト指向プログラミングのすべてのレッスン