まとめ:銀行口座管理
CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 14/87。
チャレンジ
簡単カプセル化、アクセス修飾子、getter、setter、そして final キーワードについて学んだすべてを統合した、完全な BankAccount システムを構築しましょう。
コードを整理するために、2つのファイルを作成します:
BankAccount.java: 機密性の高い財務データを保護する、安全な銀行口座クラスを設計します:- 口座が作成された後は決して変更できない、不変(immutable)な口座番号
- 0.0 から始まり、制御されたメソッドを通じてのみ変更可能なプライベートな残高
- 取得はできるが直接変更はできないプライベートな所有者名
- 口座番号と所有者名を受け取るコンストラクタ
- 口座番号の getter
- 所有者名の getter
- 残高の getter
- 金額が正の場合のみ残高に追加し、成功した場合は
true、拒否された場合はfalseを返すdeposit(double amount)メソッド - 金額が正であり、かつ十分な資金がある場合のみ残高から差し引き、成功した場合は
true、拒否された場合はfalseを返すwithdraw(double amount)メソッド - 次の形式を返す
getAccountSummary()メソッド:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(残高は小数点以下2桁にフォーマットすること)
Main.java: BankAccount を作成し、一連の取引を実行します。口座番号、所有者名、預金額、1回目の引き出し額、2回目の引き出し額の5つの入力を受け取ります。次の4行を出力してください:- 預金の結果:
Deposit: trueまたはDeposit: false - 1回目の引き出しの結果:
Withdraw 1: trueまたはWithdraw 1: false - 2回目の引き出しの結果:
Withdraw 2: trueまたはWithdraw 2: false - 最終的な口座の概要
- 預金の結果:
accountNumber (String)、ownerName (String)、depositAmount (double)、withdrawAmount1 (double)、withdrawAmount2 (double) の順に5つの入力を受け取ります。
残高を小数点以下2桁にフォーマットするには、String.format("%.2f", balance) を使用できます。
自分で試してみよう
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 入力を読み込む
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: accountNumber と ownerName を使用して BankAccount オブジェクトを作成する
// TODO: 入金を実行し、結果を "Deposit: true" または "Deposit: false" として出力する
// TODO: 1回目の出金を実行し、結果を "Withdraw 1: true" または "Withdraw 1: false" として出力する
// TODO: 2回目の出金を実行し、結果を "Withdraw 2: true" または "Withdraw 2: false" として出力する
// TODO: 口座の概要を出力する
}
}
オブジェクト指向プログラミングのすべてのレッスン
4継承
継承の基本 (extends)super キーワードメソッドのオーバーライド (@Override)コンストラクタチェーンObject クラス単一継承と多段階継承なぜ多重継承ができないのかまとめ:従業員の階層構造