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 55 trên 70.
Thử thách
DễHãy cùng xây dựng nền tảng cho hệ thống Shape Manager! Dự án này sẽ phát triển qua vài bài học tiếp theo, nên trước tiên, mình sẽ tạo cấu trúc tệp gọn gàng với một lớp cơ sở Shape.
Bạn sẽ tạo hai tệp để sắp xếp code:
Shape.lua: Định nghĩa lớp cơ sởShapebằng mẫu prototype. Mỗi hình có thuộc tínhname(chẳng hạn như "Circle" hoặc "Rectangle"). Thêm hàm khởi tạo:new(name)nhận tên hình và phương thức:getName()trả về tên đó.main.lua: Tạo đối tượng Shape bằng cách yêu cầu module và tạo một instance hình. Đọc tên hình từ đầu vào, tạo một Shape với tên đó, rồi in ra kết quả gọi:getName().
Lớp cơ sở này sẽ làm lớp cha cho các hình cụ thể như Rectangle và Circle trong những bài học sắp tới. Trước mắt, hãy tập trung xây dựng đúng cấu trúc lớp: thiết lập __index, mẫu hàm khởi tạo và phương thức lấy giá trị.
Đầu vào: Một dòng duy nhất chứa tên hình (một chuỗi).
Đầu ra: Tên hình do :getName() trả về.
Tự làm thử
-- Nạp module Shape
local Shape = require('Shape')
-- Đọc tên hình từ đầu vào
local shapeName = io.read()
-- TODO: Tạo một instance Shape mới với tên đã cho
-- TODO: In ra kết quả khi gọi :getName() trên hình của bạn
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ền7Đa hình và ghi đè
Ghi đè phương thứcGọi phương thức của lớp chaGõ kiểu vịtGiao diện chungKiểm tra kiểuÔn tập: Vai trò của nhân viên10Dự án: Quản lý hình dạng
Thiết lập dự ánLớp hình chữ nhậtLớp hình trònPhương thức tính chu viTập hợp hình dạngTổng diện tíchLọc hình dạng2Mẫ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