入金ロジック
CoddyのCジャーニー「Object Oriented Programming」セクションの一部 — レッスン 24/61。
チャレンジ
簡単Accountモジュールに最初の本格的な銀行業務、つまり資金を預け入れる機能を追加しましょう!預金(deposit)関数はスマートである必要があります。正の金額のみを受け入れ、無効な取引からアカウントを保護しなければなりません。
既存の銀行口座プロジェクトをベースに、預金機能を追加してモジュールを拡張します。預金関数は、隠された残高を変更する前に入力を検証する必要があります。これは、データの整合性を守るためのカプセル化の仕組みです。
3つのファイルを操作します:
account.h: 新しい関数のプロトタイプdepositを追加して、既存のヘッダーを拡張します。この関数は Account ポインタとdouble型の金額を受け取り、int型(成功した場合は 1、金額が無効な場合は 0)を返します。create_accountとdestroy_accountの既存の宣言はそのまま保持してください。account.c: 既存のコンストラクタとデストラクタに加えて、deposit関数を実装します。預金は、金額が正(0より大きい)の場合にのみ成功する必要があります。有効な場合は、隠された残高に金額を加算し、1 を返します。金額が 0 または負の場合は、残高を変更せずに 0 を返して拒否します。main.c: アカウントを作成し、複数の預金操作(有効なものと無効なもの)を実行して、検証が正しく機能することを示すことで、預金機能を実証します。
3つの入力を受け取ります:アカウントID(整数)、有効な預金額(正の数)、および無効な預金額(0または負の数)。
メインファイルで、指定されたIDでアカウントを作成し、確認メッセージを出力します。次に、まず無効な金額の預金を試み、成功したかどうかを出力し、残高が変更されないことを確認します。次に、有効な金額を預け入れ、成功結果を出力します。最後に、アカウントを破棄し、クリーンアップを確認します。
出力は以下の形式で表示してください:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedここで、1001 はアカウントID、-50.00 は無効な金額、200.00 は有効な金額です。すべての金額は %.2f を使用して小数点以下2桁でフォーマットしてください。
預金関数はゲートキーパーとして機能し、有効な取引のみがアカウントの隠された残高を変更できるようにします。まだ残高を確認することはできませんが(ゲッターは後のレッスンで追加します)、無効な預金が適切に拒否されていることを信頼できます。
自分で試してみよう
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
destroy_account(account);
printf("Account destroyed\n");
return 0;
}