Menu
Coddy logo textTech

まとめ - 銀行口座マネージャー

CoddyのC#ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 18/70。

challenge icon

チャレンジ

簡単

クラス設計について学んだすべての知識を統合して、完全な銀行口座管理システムを構築しましょう。インスタンスデータ(各口座に固有)と静的データ(すべての口座で共有)を適切に区別し、バリデーションを使用して口座を有効な状態に保つ BankAccount クラスを作成します。

コードを整理するために、2つのファイルを作成します:

  • BankAccount.cs: Banking 名前空間内に BankAccount クラスを定義します。口座には以下を含める必要があります:
    • const フィールド MinimumBalance100 に設定 - すべての口座が維持しなければならない最小残高
    • 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.0

Aliceの名前から余分なスペースがトリミングされ、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}
    }
}

オブジェクト指向プログラミングのすべてのレッスン