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.
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ốidxác định từng tài khoản - Thêm phương thức biến đổi
__tostringtrả về một chuỗi có định dạng, thể hiện thông tin tài khoản
- Sửa hàm khởi tạo
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 = BALANCETrong đó, 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:
- ID của tài khoản thứ nhất
- Số tiền nạp vào tài khoản thứ nhất
- ID của tài khoản thứ hai
- 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 = 750Giờ đâ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
1Khái niệm “self”
Bảng với hàm“self” tường minhCú pháp dấu hai chấmDấu chấm và dấu hai chấmÔn tập: Điểm chuyển động4Dự án: Ngân hàng số
Thiết lập dự ánPhương thức nạp tiền2Mẫu Prototype cho lớp
Khái niệm PrototypeLiên kết bằng __indexHàm khởi tạo :new()Khởi tạo thuộc tínhCác instance độc lậpÔn tập: Nhà máy ô tô5Nạp chồng toán tử trong OOP
Cộng các đối tượngTrừ các đối tượngNối các đối tượngSo sánh các đối tượng (<, >)Ôn tập: phép tính với ví tiền8Đóng gói
Quy ước đặt tênClosure để bảo mậtTruy cập qua closureBảng chỉ đọcLogic kiểm tra hợp lệTổng kết: Két an toàn11Mẫu thiết kế (cơ bản)
Hàm tạo đối tượngBảng SingletonMẫu IteratorObserver (Listener)Ôn tập: Factory Logger3Trạng thái và hành vi của đối tượng
Biến instancePhương thức getterPhương thức setterThuộc tính tính toánĐịnh dạng chuỗiKiểm tra tính bằng nhauÔn tập: điểm số học sinh6Cơ bản về kế thừa
Thiết lập kế thừaKế thừa phương thứcMở rộng hàm khởi tạoThêm phương thức cho lớp conDùng chung và riêngÔn tập: hệ phân cấp hình dạngTự luyện tập: Trình biên dịch Lua online