管理者インターフェース
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 105/110。
チャレンジ
簡単前のレッスンでは、Libraryクラスに検索機能を追加しました。次は、特権ユーザーがライブラリの在庫を管理(新しい本の追加や既存の本の削除)できるようにする管理者インターフェースを作成しましょう。
新しい Admin クラスを導入し、Library に管理機能を強化します:
book.dart: 既存のBookクラスは変更せずにそのまま使用します。user.dart: 既存のUserクラスは変更せずにそのまま使用します。admin.dart: ライブラリ管理者を象徴する新しいAdminクラスを作成します。管理者はid(String) とname(String) を持ちます。toString()をオーバーライドして、Admin [id]: nameを返すようにします。library.dart:Libraryクラスに管理機能を追加します:- 登録された管理者を保存するためのリストを追加します。
registerAdmin(Admin admin)- 管理者をライブラリに登録します。addBookAsAdmin(String adminId, Book book)- 管理者が存在する場合、本を追加し、adminId added "title"と出力します。管理者が存在しない場合は、Unauthorizedと出力します。removeBook(String adminId, String isbn)- 管理者が存在し、かつ本が存在する場合、ライブラリからその本を削除し、adminId removed "title"と出力します。管理者が存在しない場合はUnauthorizedを、本が存在しない場合はBook not foundと出力します。getBookCount()- ライブラリ内の本の総数を返します。
main.dart: 管理者インターフェースのデモンストレーションを行います。Libraryを作成し、管理者を登録します (A001,Sarah Admin)。この管理者を使用して、以下の3冊の本を追加してください: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 Martin
Total books: Xとして出力します。次に、未登録の管理者IDA999で本を追加しようとしてみてください。その後、登録済みの管理者を使用して2冊目の本を削除します。最後に、最終的な本の数を出力します。
期待される出力:
A001 added "The Pragmatic Programmer"
A001 added "JavaScript: The Good Parts"
A001 added "Clean Code"
Total books: 3
Unauthorized
A001 removed "JavaScript: The Good Parts"
Total books: 2自分で試してみよう
import 'book.dart';
import 'user.dart';
import 'library.dart';
import 'admin.dart';
void main() {
// TODO: Library を作成する
// TODO: 管理者 (A001, Sarah Admin) を作成して登録する
// TODO: 管理者を使用して3冊の本を追加する:
// - 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
// TODO: 本の数を "Total books: X" として表示する
// TODO: 未登録の管理者 id A999 で本の追加を試行する
// TODO: 登録済みの管理者を使用して2冊目の本 (978-0-596-51774-8) を削除する
// TODO: 最終的な本の数を表示する
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ