Menu
Coddy logo textTech

貸出システム

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

challenge icon

チャレンジ

簡単

前のレッスンでは、基本的なプロパティを持つ Book クラスと User クラスを作成しました。次は、貸出プロセス全体を管理する Library クラスを使用して、適切な貸出システムを構築しましょう。

新しいファイルを作成し、既存のファイルを更新して貸出ロジックを実装します。

  • book.dart: isbntitleauthorisAvailable、および toString() を持つ既存の Book クラスを保持します。
  • user.dart: idnameborrowedBooks、および toString() を持つ既存の User クラスを保持します。
  • library.dart: 本とユーザーを管理する新しい Library クラスを作成します。これには、books 用と users 用の2つのリストが必要です。以下のメソッドを含めてください:
    • addBook(Book book) - 図書館のコレクションに本を追加します。
    • registerUser(User user) - 図書館にユーザーを登録します。
    • borrowBook(String isbn, String userId) - 本とユーザーを検索します。本が存在し、利用可能で、かつユーザーが存在する場合、その本を「利用不可」に設定し、ユーザーの貸出中リストに追加して、userId borrowed "title" と出力します。本が見つからない場合は Book not found、本が利用可能でない場合は Book not available、ユーザーが見つからない場合は User not found と出力します。
    • returnBook(String isbn, String userId) - 本とユーザーを検索します。両方が存在し、ユーザーがその本を借りている場合、その本を「利用可能」に設定し、ユーザーの貸出中リストから削除して、userId returned "title" と出力します。本が見つからない場合は Book not found、ユーザーが見つからない場合は User not found と出力します。
  • main.dart: すべてのファイルをインポートし、貸出システムを実演します。Library を作成し、2冊の本(978-0-13-468599-1, The Pragmatic Programmer, David Thomas978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford)を追加し、1人のユーザー(U001, Alice Johnson)を登録します。その後、以下の操作を行います:
    1. Aliceのために1冊目の本を借りる
    2. 同じ本をもう一度借りようとする(失敗するはずです)
    3. Aliceのために2冊目の本を借りる
    4. Aliceを出力して、貸出数を確認する
    5. 1冊目の本を返却する
    6. 再度Aliceを出力して、更新された貸出数を確認する

期待される出力:

U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)

自分で試してみよう

import 'book.dart';
import 'user.dart';
import 'library.dart';

void main() {
  // TODO: Library インスタンスを作成する
  
  // TODO: 2冊の本を作成する:
  // - Book 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
  // - Book 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
  
  // TODO: 両方の本を library に追加する
  
  // TODO: id 'U001'、name 'Alice Johnson' のユーザーを作成する
  
  // TODO: ユーザーを library に登録する
  
  // TODO: Alice のために1冊目の本を借りる
  
  // TODO: 同じ本をもう一度借りてみる('Book not available' で失敗するはず)
  
  // TODO: Alice のために2冊目の本を借りる
  
  // TODO: Alice をプリントして、借りている本の数を表示する
  
  // TODO: 1冊目の本を返却する
  
  // TODO: 再度 Alice をプリントして、更新された数を表示する
}

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