プロジェクトの仕上げ:メインループ
CoddyのCジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 27/61。
チャレンジ
簡単おめでとうございます。完全な Bank Account ライブラリを構築しました!ここで役割を切り替えます。ライブラリの作成者ではなく、ライブラリの利用者になります。あなたの課題は、Account モジュールをさまざまな操作で試す main プログラムを書くことです。
銀行に顧客がやって来て、一連の取引を行うところを想像してください。account を作成し、入金と出金を行い、その過程で残高を確認し、最後に用事が済んだら account を閉じます。
3つのファイルを扱います。
account.h: opaque なAccount型と、すべての関数プロトタイプであるcreate_account、destroy_account、deposit、withdraw、get_balanceを含む、完成したヘッダーファイルです。account.c:idとbalanceを含む非公開の struct と、このプロジェクトを通して構築してきたすべての関数実装を含む、完成した実装です。main.c: ここがあなたの腕の見せ所です!現実的な一連の取引を通して、bank account の完全なライフサイクルを実演するプログラムを書きます。
5つの入力を受け取ります。account ID(整数)、first deposit、withdrawal、second deposit、そしてattempted overdraft(insufficient funds により失敗するはずの withdrawal)です。
main プログラムでは、この account の生涯を次のように示します。
- account を作成して通知する
- starting balance を表示する
- first deposit を行い、新しい balance を表示する
- funds を withdraw し、updated balance を表示する
- もう一度 deposit を行い、balance を表示する
- balance を超える withdrawal を試みる。これは failed になるはずです
- final balance を表示する(failed withdrawal の後も変わらない)
- account を閉じる
次の形式で出力します。
Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closedここで 2001 は account ID、金額は入力を反映したものです。すべての金額を %.2f を使って小数点以下2桁で表示してください。withdraw が 0 を返したときに、failed withdrawal のメッセージを表示します。
この総仕上げでは、encapsulation について学んだことをすべて実演します。main プログラムは公開インターフェースを通してのみ Account とやり取りし、非公開の内部データに直接触れることはありません。
自分で試してみよう
#include <stdio.h>
#include "account.h"
int main() {
// TODO: 入力から account_id、deposit1、withdraw_amount、deposit2、および overdraft を読み取る
// TODO: アカウントを作成し、"Account <id> created" を出力する
// TODO: 開始残高を出力する
// TODO: 最初の入金を行い、"Deposited <amount>" と新しい残高を出力する
// TODO: 資金を引き出し、"Withdrew <amount>" と更新された残高を出力する
// TODO: 2回目の入金を行い、"Deposited <amount>" と新しい残高を出力する
// TODO: Attempt the overdraft withdrawal; if it fails, print "Withdrawal failed: insufficient funds"
// TODO: 最終残高を出力する
// TODO: "Account <id> closed" を出力し、アカウントを破棄する
return 0;
}
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ