貸出システム
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 103/110。
チャレンジ
簡単前のレッスンでは、基本的なプロパティを持つ Book クラスと User クラスを作成しました。次は、貸出プロセス全体を管理する Library クラスを使用して、適切な貸出システムを構築しましょう。
新しいファイルを作成し、既存のファイルを更新して貸出ロジックを実装します。
book.dart:isbn、title、author、isAvailable、およびtoString()を持つ既存のBookクラスを保持します。user.dart:id、name、borrowedBooks、および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 Thomasと978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford)を追加し、1人のユーザー(U001,Alice Johnson)を登録します。その後、以下の操作を行います:- Aliceのために1冊目の本を借りる
- 同じ本をもう一度借りようとする(失敗するはずです)
- Aliceのために2冊目の本を借りる
- Aliceを出力して、貸出数を確認する
- 1冊目の本を返却する
- 再度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 をプリントして、更新された数を表示する
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ