Thiết lập dự á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 19 trên 70.
Thử thách
DễChúng ta bắt đầu dự án Digital Bank. Trong các bài học tiếp theo, bạn sẽ xây dựng một lớp (class) Account có thể nhận tiền gửi, xử lý việc rút tiền, tự in thông tin và chuyển tiền sang các tài khoản khác. Mọi thứ bắt đầu với cấu trúc tệp gọn gàng và một hàm khởi tạo (constructor).
Hai tệp của bạn:
Account.lua: định nghĩa bảngAccount, thiết lậpAccount.__index = Accountđể các instance tìm thấy phương thức của chúng, rồi viết hàm khởi tạo:new(). Hàm này tạo một bảng trống, đặt metatable của bảng thànhAccount, gán giá trị0chobalancerồi trả về bảng đó. Tệp kết thúc bằngreturn Account.main.lua: yêu cầu module bằngrequire('Account'), tạo hai tài khoản bằngAccount:new(), in số dư của mỗi tài khoản trên một dòng riêng, rồi insavings == checkingđể cho thấy hai lần gọi đã tạo ra hai bảng khác nhau.
Đầu ra dự kiến:
0
0
falseMỗi tài khoản bắt đầu với số dư bằng không. Trong bài học tiếp theo, bạn sẽ thêm phương thức :deposit(amount) để tăng số dư.
Tự làm thử
-- TODO: dùng require để nạp module Account (tệp là Account.lua)
local Account = nil
-- TODO: tạo hai tài khoản bằng Account:new()
-- TODO: in ra số dư của từng tài khoản (mỗi tài khoản một dòng)
-- TODO: in ra hai tài khoản có phải là cùng một bảng hay không (chúng không nên là cùng một bảng)
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