Ôn tập: điểm số học sinh
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 18 trên 70.
Thử thách
DễHãy xây dựng một lớp Student hoàn chỉnh, kết hợp mọi thứ bạn đã học trong chương này: biến instance, getter, setter và các thuộc tính được tính toán cùng hoạt động!
Bạn sẽ sắp xếp code trong hai tệp:
Student.lua: Định nghĩa lớpStudentbằng mẫu prototype tiêu chuẩn. Mỗi học sinh cần lưunamevàgrade. Lớp của bạn cần có:- Hàm khởi tạo
:new(name, grade) - Getter
:getName()trả về tên của học sinh - Getter
:getGrade()trả về điểm hiện tại - Setter
:setGrade(newGrade)cập nhật điểm - Phương thức
:hasPassed(threshold)trả vềtruenếu điểm của học sinh lớn hơn hoặc bằng ngưỡng, nếu không thì trả vềfalse
- Hàm khởi tạo
main.lua: Nạp module Student và minh họa tất cả chức năng bằng cách tạo một học sinh, kiểm tra trạng thái, cập nhật điểm và xác minh các thay đổi.
Bạn sẽ nhận bốn đầu vào:
- Tên học sinh
- Điểm ban đầu
- Ngưỡng đạt để kiểm tra
- Điểm mới cần đặt
Trong tệp chính, hãy tạo một học sinh với tên và điểm ban đầu đã cho, sau đó in các nội dung sau, mỗi nội dung trên một dòng riêng:
- Tên học sinh
- Điểm ban đầu của học sinh
- Học sinh có đạt ngưỡng đã cho hay không (in
truehoặcfalse) - Điểm của học sinh sau khi cập nhật bằng điểm mới
- Học sinh có đạt cùng ngưỡng đó sau khi cập nhật điểm hay không
Ví dụ, nếu đầu vào là Emma, 55, 60 và 75, đầu ra sẽ là:
Emma
55
false
75
trueBan đầu, Emma có điểm 55, chưa đạt ngưỡng 60. Sau khi cập nhật điểm lên 75, giờ đây cô ấy đã đạt!
Tự làm thử
-- Nạp module Student bằng require
local Student = require('Student')
-- Đọc dữ liệu đầu vào
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: Tạo một học sinh với tên và điểm ban đầu đã cho
-- TODO: Dùng getter để in ra tên học sinh
-- TODO: Dùng getter để in ra điểm ban đầu của học sinh
-- TODO: Kiểm tra và in ra học sinh có đạt ngưỡng điểm đã cho hay không
-- TODO: Dùng setter để cập nhật điểm của học sinh
-- TODO: In ra điểm mới của học sinh
-- TODO: Kiểm tra và in ra học sinh có đạt ngưỡng điểm sau khi cập nhật điểm hay khô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