Lớp hình chữ nhật
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 56 trên 70.
Thử thách
DễBây giờ, hãy mở rộng Shape Manager bằng cách tạo lớp Rectangle kế thừa từ lớp cơ sở Shape mà bạn đã tạo trong bài học trước.
Bạn sẽ làm việc với ba tệp để sắp xếp code:
Shape.lua: Lớp Shape cơ sở từ thử thách trước (có:new(name)và:getName()).Rectangle.lua: Tạo lớp Rectangle kế thừa từ Shape. Hàm khởi tạo cần nhậnwidthvàheight, gọi hàm khởi tạo của lớp cha với tên"Rectangle", rồi lưu các kích thước. Thêm phương thức:getArea()để tính và trả về diện tích hình chữ nhật.main.lua: Nạp module Rectangle, đọc chiều rộng và chiều cao từ đầu vào, tạo một instance Rectangle, rồi in tên của nó và diện tích trên các dòng riêng biệt.
Nhớ thiết lập liên kết kế thừa đúng cách để các instance Rectangle có thể truy cập những phương thức của Shape thông qua chuỗi nguyên mẫu.
Đầu vào: Hai dòng: dòng đầu chứa chiều rộng (số), dòng thứ hai chứa chiều cao (số).
Đầu ra: Hai dòng: tên của hình chữ nhật từ :getName(), sau đó là diện tích từ :getArea().
Tự làm thử
-- Nạp module Rectangle
local Rectangle = require('Rectangle')
-- Đọc chiều rộng và chiều cao từ đầu vào
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Tạo một instance Rectangle mới với kích thước đã cho
local rect = Rectangle:new(width, height)
-- In ra tên và diện tích của hình chữ nhật
print(rect:getName())
print(rect:getArea())
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