Menu
Coddy logo textTech

출금 메서드

Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 21번째.

challenge icon

챌린지

쉬움

여러분의 디지털 뱅크가 성장하고 있습니다! 이제 계좌로 입금을 받을 수 있게 되었지만, 실제 은행이라면 고객이 돈을 인출할 수도 있어야 합니다. :withdraw(amount) 메서드를 추가해 봅시다. 단, 중요한 안전 점검 기능이 포함되어야 합니다.

입금과 달리 출금은 실패할 수 있습니다. 고객이 가진 돈보다 더 많은 금액을 출금하려고 하면 은행은 이를 허용해서는 안 됩니다. 여러분의 출금 메서드는 금액을 차감하기 전에 잔액이 충분한지 확인해야 합니다.

다음 두 개의 파일로 작업을 계속합니다:

  • Account.lua: 기존 Account 클래스에 :withdraw(amount) 메서드를 추가하세요. 계좌에 충분한 잔액이 있으면 해당 금액을 차감하고 true를 반환합니다. 잔액이 부족하면 Insufficient funds를 출력하고 잔액 변경 없이 false를 반환하세요.
  • main.lua: 계좌를 생성하고, 입금을 통해 자금을 넣은 다음, 여러 번의 출금을 시도하여 성공과 실패 거래를 모두 확인해 보세요.

네 개의 입력을 받게 됩니다:

  1. 초기 입금액
  2. 첫 번째 출금액
  3. 두 번째 출금액
  4. 세 번째 출금액

메인 파일에서 계좌를 생성하고 초기 금액을 입금한 뒤, 각 출금을 순서대로 시도하세요. 각 출금 시도 후에는 현재 잔액을 새 줄에 출력합니다. 출금에 실패했을 경우 잔액을 출력하기 전에 Insufficient funds가 먼저 출력되어야 함을 기억하세요.

예를 들어, 입력값이 100, 30, 50, 40이라면 출력은 다음과 같아야 합니다:

70
20
Insufficient funds
20

입금 후 계좌는 100으로 시작합니다. 첫 번째 30 출금은 성공하고(잔액: 70), 두 번째 50 출금도 성공하지만(잔액: 20), 세 번째 40 출금은 잔액이 20밖에 남지 않아 실패하므로 잔액은 20으로 유지됩니다.

직접 해보기

-- Account 모듈을 불러옵니다
local Account = require('Account')

-- 네 개의 입력을 읽습니다
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)

-- 첫 번째 출금을 시도하고 잔액을 출력합니다
-- TODO: 여기서 account:withdraw(withdrawal1)를 호출하세요
print(account.balance)

-- 두 번째 출금을 시도하고 잔액을 출력합니다
-- TODO: 여기서 account:withdraw(withdrawal2)를 호출하세요
print(account.balance)

-- 세 번째 출금을 시도하고 잔액을 출력합니다
-- TODO: 여기서 account:withdraw(withdrawal3)를 호출하세요
print(account.balance)

Object Oriented Programming의 모든 레슨