Menu
Coddy logo textTech

出金メソッド

CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 21/70。

challenge icon

チャレンジ

簡単

あなたのデジタルバンクは成長しています!口座に預金ができるようになりましたが、本物の銀行は顧客がお金を引き出せるようにもする必要があります。:withdraw(amount) メソッドを追加しましょう。ただし、重要なセキュリティチェックを含めます。

預金とは異なり、引き出しは失敗することがあります。顧客が持っている以上の金額を引き出そうとした場合、銀行はそれを許可すべきではありません。引き出しメソッドは、金額を差し引く前に十分な残高があるかどうかを確認する必要があります。

引き続き、以下の2つのファイルを編集します:

  • Account.lua: 既存の Account クラスに :withdraw(amount) メソッドを追加します。口座に十分な残高がある場合は、その金額を差し引き、true を返します。残高が不足している場合は、Insufficient funds と表示し、残高を変更せずに false を返します。
  • main.lua: 口座を作成し、預金をして資金を追加した後、いくつかの引き出しを試みて、成功と失敗の両方のトランザクションを確認します。

4つの入力を受け取ります:

  1. 初期預金額
  2. 1回目の引き出し額
  3. 2回目の引き出し額
  4. 3回目の引き出し額

メインファイルで、口座を作成し、初期額を預金してから、各引き出しを順番に試行してください。各引き出しの試行後、現在の残高を新しい行に表示します。失敗した引き出しの場合、残高を表示する前に Insufficient funds も表示されることに注意してください。

例えば、入力が 100305040 の場合、出力は以下のようになります:

70
20
Insufficient funds
20

預金後、口座は 100 から始まります。1回目の 30 の引き出しは成功し(残高: 70)、2回目の 50 の引き出しも成功しますが(残高: 20)、3回目の 40 の引き出しは残高が 20 しかないため失敗し、残高は 20 のままとなります。

自分で試してみよう

-- Accountモジュールを読み込む
local Account = require('Account')

-- 4つの入力を読み込む
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- 単一のアカウントを作成する
local account = Account:new()

-- 初回入金額を預け入れる
account:deposit(initialDeposit)

-- 1回目の引き出しを試行し、残高を表示する
-- TODO: ここで account:withdraw(withdrawal1) を呼び出す
print(account.balance)

-- 2回目の引き出しを試行し、残高を表示する
-- TODO: ここで account:withdraw(withdrawal2) を呼び出す
print(account.balance)

-- 3回目の引き出しを試行し、残高を表示する
-- TODO: ここで account:withdraw(withdrawal3) を呼び出す
print(account.balance)

Object Oriented Programmingのすべてのレッスン