Menu
CoddyTech

Thông tin tài khoản

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 23 trên 70.

challenge icon

Thử thách

Dễ

Ngân hàng kỹ thuật số của bạn ngày càng chuyên nghiệp hơn! Bây giờ, hãy làm cho các tài khoản tự hiển thị thật đẹp khi in ra. Bằng cách thêm phương thức biến đổi __tostring, bạn có thể kiểm soát chính xác cách tài khoản hiển thị: thể hiện cả ID tài khoản và số dư hiện tại theo định dạng rõ ràng, dễ đọc.

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

  • Account.lua: Mở rộng lớp Account với hai tính năng mới:
    • Sửa hàm khởi tạo :new() để nhận tham số id xác định từng tài khoản
    • Thêm phương thức biến đổi __tostring trả về một chuỗi có định dạng, thể hiện thông tin tài khoản
    Giữ lại mọi chức năng hiện có (các phương thức nạp tiền, rút tiền và getBalance).
  • main.lua: Tạo các tài khoản có ID và minh họa cách chúng tự hiển thị khi được in ra.

Phương thức __tostring phải trả về một chuỗi theo đúng định dạng sau:

Account [ID]: Balance = BALANCE

Trong đó, ID là ID của tài khoản và BALANCE là số dư hiện tại.

Bạn sẽ nhận được bốn đầu vào:

  1. ID của tài khoản thứ nhất
  2. Số tiền nạp vào tài khoản thứ nhất
  3. ID của tài khoản thứ hai
  4. Số tiền nạp vào tài khoản thứ hai

Trong tệp chính, hãy tạo hai tài khoản với các ID đã cho, nạp số tiền tương ứng vào từng tài khoản, sau đó in trực tiếp từng tài khoản bằng print(). Phương thức biến đổi __tostring sẽ tự động được gọi khi bạn in đối tượng tài khoản.

Ví dụ, nếu đầu vào là 1001, 500, 1002 và 750, đầu ra sẽ là:

Account [1001]: Balance = 500
Account [1002]: Balance = 750

Giờ đây, mỗi tài khoản đều có danh tính riêng và có thể tự mô tả rõ ràng: trải nghiệm ngân hàng chuyên nghiệp hơn nhiều!

Tự làm thử

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

-- Đọc bốn đầu vào
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())

-- Tạo hai tài khoản với các ID tương ứng
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Nạp số tiền tương ứng vào từng tài khoản
account1:deposit(deposit1)
account2:deposit(deposit2)

-- In ra từng tài khoản (dùng __tostring)
print(account1)
print(account2)

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