残高の取得
CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 22/70。
チャレンジ
簡単あなたのデジタルバンクが形になってきました!口座は預金を受け取り、適切な残高チェックを伴う引き出しを処理できるようになりました。次は、残高を取得するためのゲッターメソッドを追加し、現実的な銀行のシナリオですべてを組み合わせてみましょう。
既存のファイルをさらに構築していきます:
Account.lua: 現在の残高を返す:getBalance()メソッドを追加します。これは以前に学んだゲッターパターンに従うもので、フィールドに直接アクセスするのではなく、内部データへの制御されたアクセスを提供します。既存のすべての機能(コンストラクタ、預金、引き出しメソッド)はそのまま保持してください。main.lua: 口座を作成し、一連の銀行操作を実行して、預金、引き出し、残高チェックが実際のシナリオでどのように連携するかを示します。
5つの入力を受け取ります:
- 初期預金額
- 1回目の引き出し額
- 2回目の預金額
- 2回目の引き出し額
- 3回目の引き出し額
メインファイルで口座を作成し、以下の操作を順番に実行してください:
- 初期額を預金し、
:getBalance()を使用して残高を表示する - 1回目の額を引き出し、残高を表示する
- 2回目の額を預金し、残高を表示する
- 2回目の額を引き出し、残高を表示する
- 3回目の引き出しを試行し、残高を表示する
引き出しに失敗した場合は、残高を表示する前に Insufficient funds と表示されることに注意してください。
例えば、入力が 200, 50, 100, 180, 100 の場合、出力は以下のようになります:
200
150
250
70
Insufficient funds
70口座は200から始まり、最初の引き出しで150に減り、次の預金で250に増え、180を引き出した後に70になり、最後の100の引き出しが資金不足で失敗したときは70のままとなります。
自分で試してみよう
-- Accountモジュールを読み込む
local Account = require('Account')
-- 5つの入力を読み込む
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- 単一のアカウントを作成する
local account = Account:new()
-- 初回入金を行い、:getBalance()を使用して残高を表示する
account:deposit(initialDeposit)
print(account:getBalance())
-- 1回目の引き出しを試行し、残高を表示する
account:withdraw(withdrawal1)
print(account:getBalance())
-- 2回目の入金を行い、残高を表示する
account:deposit(deposit2)
print(account:getBalance())
-- 2回目の引き出しを試行し、残高を表示する
account:withdraw(withdrawal2)
print(account:getBalance())
-- 3回目の引き出しを試行し、残高を表示する
account:withdraw(withdrawal3)
print(account:getBalance())