入金ロジック
CoddyのCジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 24/61。
チャレンジ
簡単Accountモジュールに、初めての本格的な銀行操作を追加しましょう。資金を預け入れる機能です!deposit関数は賢く設計する必要があります。正のamountだけを受け付け、invalidな取引からaccountを保護しなければなりません。
既存のBank Accountプロジェクトを基に、deposit機能を使ってモジュールを拡張します。deposit関数は、非公開の残高を変更する前に入力を検証する必要があります。これは、データの完全性を保護するカプセル化の働きです。
3つのファイルを扱います。
account.h: 既存のヘッダーに新しい関数prototypeとしてdepositを追加して拡張します。この関数はAccountポインターとdoubleのamountを受け取り、intを返します(成功時は1、amountがinvalidの場合は0)。既存のcreate_accountとdestroy_accountの宣言は残してください。account.c: 既存のコンストラクターとデストラクターと並べてdeposit関数をImplementします。depositは、amountが正(0より大きい)の場合にのみ成功するようにします。validなら、amountを非公開の残高にaddして1をreturnします。amountが0または負の場合は、残高を変更せずに0をreturnして拒否します。main.c: accountを作成し、validなdepositとinvalidなdepositを含む複数のdeposit操作を実行して、検証が正しく機能することを示します。
3つの入力を受け取ります。account ID(整数)、validなdeposit amount(正の数)、invalidなdeposit amount(0または負の数)です。
mainファイルで、指定されたIDを使ってaccountを作成し、確認メッセージを出力します。次に、まずinvalidなamountのdepositを試み、成功したかどうかを出力し、残高が変わらないはずであることを示します。続いてvalidなamountをdepositし、成功結果を出力します。最後にaccountをdestroyし、クリーンアップを確認します。
次の形式で出力してください。
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedここで、1001はaccount ID、-50.00はinvalidなamount、200.00はvalidなamountです。すべてのamountは%.2fを使って小数点以下2桁でフォーマットしてください。
deposit関数は門番として機能します。validな取引だけがaccountの非公開の残高を変更できるようにします。まだ残高を確認することはできませんが(後のレッスンでgetterを追加します)、invalidなdepositが正しく拒否されていることを信頼できます。
自分で試してみよう
#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;
}
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ