최종 뱅크 테스트
Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 25번째.
챌린지
쉬움완전한 디지털 뱅킹 시스템을 구축하신 것을 축하드립니다! 이제 여러분의 Account 클래스는 입금, 출금, 잔액 확인, 계좌 식별 및 계좌 간 이체를 처리할 수 있습니다. 실제적인 다중 계좌 뱅킹 시나리오를 통해 이 모든 것을 테스트해 봅시다.
이 마지막 챌린지에서는 세 명의 고객이 다양한 거래를 수행하는 작은 은행을 시뮬레이션합니다. 이를 통해 모든 메서드가 함께 올바르게 작동하는지, 그리고 계좌가 독립적인 상태를 유지하는지 확인할 것입니다.
두 개의 파일:
Account.lua: 이 프로젝트를 통해 구축한 모든 기능(ID가 포함된 생성자, deposit, withdraw, getBalance, __tostring, transfer)을 갖춘 완성된 Account 클래스입니다.main.lua: 여러 계좌를 생성하고 계좌 간의 일련의 거래를 실행하는 시뮬레이션 스크립트입니다.
여섯 개의 입력을 받게 됩니다:
- 계좌 1 ID
- 계좌 2 ID
- 계좌 3 ID
- 계좌 1의 초기 입금액
- 계좌 2의 초기 입금액
- 계좌 3의 초기 입금액
메인 파일에서 다음과 같은 은행 업무 하루를 시뮬레이션하세요:
- 주어진 ID로 세 개의 계좌를 생성합니다.
- 각 계좌에 초기 금액을 입금합니다.
- 계좌 1이 계좌 2로 100을 이체합니다.
- 계좌 2가 계좌 3으로 150을 이체합니다.
- 계좌 3이 계좌 1로 50을 이체합니다.
- 계좌 1이 계좌 3으로 1000을 이체를 시도합니다 (이것은 실패해야 합니다).
- 세 계좌를 순서대로(계좌 1, 계좌 2, 계좌 3) 출력합니다.
예를 들어, 입력값이 A001, A002, A003, 500, 300, 200인 경우 출력은 다음과 같아야 합니다:
Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300과정을 추적해 봅시다: 계좌 1은 500으로 시작하여 계좌 2로 100을 이체하고(현재 400), 계좌 3으로부터 50을 받습니다(현재 450). 계좌 2는 300으로 시작하여 100을 받고(현재 400), 계좌 3으로 150을 이체합니다(현재 250). 계좌 3은 200으로 시작하여 150을 받고(현재 350), 계좌 1로 50을 이체합니다(현재 300). 마지막 1000의 이체는 계좌 1에 450만 있기 때문에 실패합니다.
직접 해보기
-- Account 모듈을 불러옵니다
local Account = require('Account')
-- 6개의 입력을 읽습니다
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())
-- ID를 사용하여 세 개의 계좌를 생성합니다
-- TODO: Account:new()를 사용하여 account1, account2, account3를 생성하세요
-- 각 계좌에 초기 금액을 입금합니다
-- TODO: account1에 initialDeposit1을, account2에 initialDeposit2를, account3에 initialDeposit3을 입금하세요
-- 계좌 1에서 계좌 2로 100을 이체합니다
-- TODO: account1:transfer(account2, 100)
-- 계좌 2에서 계좌 3으로 150을 이체합니다
-- TODO: account2:transfer(account3, 150)
-- 계좌 3에서 계좌 1로 50을 이체합니다
-- TODO: account3:transfer(account1, 50)
-- 계좌 1에서 계좌 3으로 1000 이체를 시도합니다 (실패해야 함)
-- TODO: account1:transfer(account3, 1000)
-- 세 계좌를 순서대로 출력합니다
-- TODO: account1, account2, account3를 출력하세요