Menu
CoddyTech

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.

challenge icon

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ận width và 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

Tự luyện tập: Trình biên dịch Lua online