Menu
CoddyTech

Lấy số dư

Thuộc phần Lập trình hướng đối tượng trong hành trình Lua của Coddy. Bài học 22 trên 70.

challenge icon

Thử thách

Dễ

Ngân hàng số của bạn đang dần thành hình! Tài khoản có thể nhận tiền gửi và xử lý các giao dịch rút tiền với bước kiểm tra số dư phù hợp. Giờ hãy thêm một phương thức lấy số dư, rồi kết hợp mọi thứ trong một tình huống ngân hàng thực tế.

Bạn sẽ tiếp tục xây dựng trên các tệp hiện có:

  • Account.lua: Thêm phương thức :getBalance() để trả về số dư hiện tại. Phương thức này làm theo mẫu getter mà bạn đã học trước đó: cung cấp quyền truy cập có kiểm soát vào dữ liệu bên trong thay vì truy cập trực tiếp vào trường dữ liệu. Giữ lại mọi chức năng hiện có, gồm hàm khởi tạo, phương thức gửi tiền và rút tiền.
  • main.lua: Tạo một tài khoản và thực hiện một loạt thao tác ngân hàng để minh họa cách gửi tiền, rút tiền và kiểm tra số dư phối hợp với nhau trong một tình huống thực tế.

Bạn sẽ nhận năm đầu vào:

  1. Số tiền gửi ban đầu
  2. Số tiền rút lần đầu
  3. Số tiền gửi lần thứ hai
  4. Số tiền rút lần thứ hai
  5. Số tiền rút lần thứ ba

Trong tệp chính, hãy tạo một tài khoản và thực hiện các thao tác sau theo thứ tự:

  1. Gửi số tiền ban đầu, rồi in ra số dư bằng :getBalance()
  2. Rút số tiền lần đầu, rồi in ra số dư
  3. Gửi số tiền lần thứ hai, rồi in ra số dư
  4. Rút số tiền lần thứ hai, rồi in ra số dư
  5. Thử rút lần thứ ba, rồi in ra số dư

Hãy nhớ rằng các giao dịch rút tiền thất bại sẽ in ra Insufficient funds trước khi bạn in ra số dư.

Ví dụ, nếu các đầu vào là 200, 50, 100, 180 và 100, đầu ra sẽ là:

200
150
250
70
Insufficient funds
70

Tài khoản bắt đầu với 200, giảm còn 150 sau lần rút tiền đầu tiên, tăng lên 250 sau lần gửi tiền tiếp theo, giảm còn 70 sau khi rút 180 và vẫn ở mức 70 khi lần rút 100 cuối cùng thất bại do không đủ tiền.

Tự làm thử

-- Nạp module Account bằng require
local Account = require('Account')

-- Đọc năm giá trị đầu vào
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())

-- Tạo một tài khoản
local account = Account:new()

-- Gửi số tiền ban đầu và in ra số dư bằng :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())

-- Thử rút tiền lần thứ nhất và in ra số dư
account:withdraw(withdrawal1)
print(account:getBalance())

-- Gửi số tiền thứ hai và in ra số dư
account:deposit(deposit2)
print(account:getBalance())

-- Thử rút tiền lần thứ hai và in ra số dư
account:withdraw(withdrawal2)
print(account:getBalance())

-- Thử rút tiền lần thứ ba và in ra số dư
account:withdraw(withdrawal3)
print(account:getBalance())

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Lua online