プロジェクトの概要とUML設計
CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 77/87。
チャレンジ
簡単Library Management System プロジェクトを、他のすべての機能が依存する基盤、つまり中核となるエンティティクラスの構築から始めましょう。この最初のチャレンジでは、システムの中核エンティティをモデル化する、適切に構造化された Book クラスと User クラスを作成します。
コードを3つのファイルに分けて整理します。
Book.java: 図書館の本を表すBookクラスを作成します。各本には、isbn(String)、title(String)、author(String)、isAvailable(boolean、デフォルト値はtrue)の Private フィールドを持たせます。isbn、title、author を受け取る Constructor を含めます。すべてのフィールドに適切な Getter methods と、isAvailableの Setter を用意します。フォーマット済みの文字列[isbn] title by authorを返すgetDetails()method を追加します。User.java: 図書館の会員を表すUserクラスを作成します。各ユーザーには、id(String)とname(String)の Private フィールドを持たせます。両方の値を受け取る Constructor を含め、それぞれのフィールドに Getter methods を用意します。User[id]: nameを返すtoString()method を追加します。Main.java: クラスを組み合わせ、正しく動作することを確認します。4つの入力、つまり本の ISBN、title、author、続いてユーザーの ID と name を受け取ります。最初の3つの入力で
Bookを、最後の2つの入力でUserを作成します。getDetails()を使用して本の詳細を出力し、続いて本が利用可能かどうかをAvailable: trueまたはAvailable: falseの形式で出力します。最後に、そのtoString()method を使用してユーザーを出力します。
入力は、ISBN(String)、title(String)、author(String)、ユーザー ID(String)、ユーザーの name(String)の順に5つ受け取ります。
たとえば、入力が 978-0-13-468599-1、Effective Java、Joshua Bloch、U001、Alice Smith の場合、出力は次のようになります。
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice Smithこれらの基礎となるクラスは、Library Management System 全体の構築要素として機能します。今後のレッスンでは、貸し出し機能、検索機能などを追加して拡張していきます。
自分で試してみよう
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 本の情報を読み取る
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// ユーザー情報を読み取る
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: isbn、title、authorを使ってBookオブジェクトを作成する
// TODO: userIdとuserNameを使ってUserオブジェクトを作成する
// TODO: getDetails()を使って本の詳細を出力する
// TODO: Print whether the book is available (format: "Available: true" or "Available: false")
// TODO: toString()を使ってユーザーを出力する
}
}
オブジェクト指向プログラミングのすべてのレッスン
4継承
継承の基本 (extends)super キーワードメソッドのオーバーライド (@Override)コンストラクタチェーンObject クラス単一継承と多段階継承なぜ多重継承ができないのかまとめ:従業員の階層構造自分で練習してみよう: Javaオンラインコンパイラ