まとめ - 銀行口座マネージャー
CoddyのC#ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 18/70。
チャレンジ
簡単クラス設計について学んだすべての知識を統合して、完全な銀行口座管理システムを構築しましょう。インスタンスデータ(各口座に固有)と静的データ(すべての口座で共有)を適切に区別し、バリデーションを使用して口座を有効な状態に保つ BankAccount クラスを作成します。
コードを整理するために、2つのファイルを作成します:
BankAccount.cs:Banking名前空間内にBankAccountクラスを定義します。口座には以下を含める必要があります:constフィールドMinimumBalanceを100に設定 - すべての口座が維持しなければならない最小残高staticフィールドInterestRate(decimal) を0.03mで初期化 - すべての口座で共有staticフィールドTotalAccounts(int) - 存在する口座の数を追跡readonlyフィールドAccountNumber(string) - 作成時に一度だけ設定され、変更不可- プライベートバッキングフィールド
_ownerNameと、設定時に空白をトリミングするプロパティOwnerName - プライベートバッキングフィールド
_balanceと、残高がMinimumBalanceを下回るのを防ぐプロパティBalance(それより低い値が設定されようとした場合は、MinimumBalanceに保持します) - 口座番号、所有者名、初期残高を受け取り、
TotalAccountsをインクリメントするコンストラクタ - 共有の利率を更新するための静的メソッド
SetInterestRate(decimal rate) - 残高に利率を掛けた値を返すメソッド
CalculateInterest()
Program.cs: メインファイルで、入力値を使用して2つの銀行口座を作成し、利率を更新し、共有の銀行データとともに口座情報を表示します。
7つの入力を受け取ります:
- 1つ目の口座番号
- 1つ目の所有者名
- 1つ目の初期残高
- 2つ目の口座番号
- 2つ目の所有者名
- 2つ目の初期残高
- 新しい利率(
0.05のような decimal 値)
出力を以下の形式で表示してください:
--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}例えば、入力が ACC001, Alice Smith , 500, ACC002, Bob Jones, 50, 0.05 の場合、出力は以下のようになります:
--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2
Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0
Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0Aliceの名前から余分なスペースがトリミングされ、Bobの残高50が最小値の100に引き上げられていることに注目してください。利息は、口座作成後に設定された更新後の利率0.05を使用して計算されています。
自分で試してみよう
using System;
using Banking;
class Program
{
public static void Main(string[] args)
{
// 1つ目の口座の入力を読み込む
string accountNumber1 = Console.ReadLine();
string ownerName1 = Console.ReadLine();
decimal balance1 = Convert.ToDecimal(Console.ReadLine());
// 2つ目の口座の入力を読み込む
string accountNumber2 = Console.ReadLine();
string ownerName2 = Console.ReadLine();
decimal balance2 = Convert.ToDecimal(Console.ReadLine());
// 新しい利率を読み込む
decimal newRate = Convert.ToDecimal(Console.ReadLine());
// TODO: 入力値を使用して2つの BankAccount オブジェクトを作成する
// TODO: static メソッドを使用して利率を更新する
// TODO: 指定されたフォーマットで銀行のサマリーを出力する
// --- Bank Summary ---
// Interest Rate: {InterestRate}
// Minimum Balance: {MinimumBalance}
// Total Accounts: {TotalAccounts}
// (空行)
// Account: {AccountNumber}
// Owner: {OwnerName}
// Balance: {Balance}
// Interest Earned: {interest}
// (空行)
// Account: {AccountNumber}
// Owner: {OwnerName}
// Balance: {Balance}
// Interest Earned: {interest}
}
}