Menu
Coddy logo textTech

入金ロジック

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

challenge icon

チャレンジ

簡単

Accountモジュールに、初めての本格的な銀行操作を追加しましょう。資金を預け入れる機能です!deposit関数は賢く設計する必要があります。正のamountだけを受け付け、invalidな取引からaccountを保護しなければなりません。

既存のBank Accountプロジェクトを基に、deposit機能を使ってモジュールを拡張します。deposit関数は、非公開の残高を変更する前に入力を検証する必要があります。これは、データの完全性を保護するカプセル化の働きです。

3つのファイルを扱います。

  • account.h: 既存のヘッダーに新しい関数prototypeとしてdepositを追加して拡張します。この関数はAccountポインターとdoubleのamountを受け取り、intを返します(成功時は1、amountがinvalidの場合は0)。既存のcreate_accountdestroy_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オンラインコンパイラ