Menu
CoddyTech

Ôn tập: phép tính với ví tiề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 30 trên 70.

challenge icon

Thử thách

Dễ

Hãy tạo lớp Wallet để kết hợp các kỹ năng nạp chồng toán tử mà bạn đã học trong chương này. Ví sẽ lưu một số tiền và hỗ trợ hai thao tác chính: gộp các ví bằng + và so sánh các ví bằng < và >.

Bạn sẽ sắp xếp code trong hai tệp:

  • Wallet.lua: Định nghĩa lớp Wallet với trường amount biểu thị số tiền trong ví. Thêm hàm khởi tạo :new(amount) và triển khai hai metamethod:
    • __add: Cộng hai ví sẽ tạo một ví mới chứa tổng số tiền
    • __lt: So sánh hai ví để xác định ví nào có ít tiền hơn
  • main.lua: Nạp module Wallet, tạo các instance ví và minh họa cách hai thao tác phối hợp với nhau.

Bạn sẽ nhận ba đầu vào:

  1. Số tiền trong ví thứ nhất
  2. Số tiền trong ví thứ hai
  3. Số tiền trong ví thứ ba

Trong tệp chính, hãy tạo ba ví với số tiền đã cho. Sau đó:

  1. Cộng ví thứ nhất và ví thứ hai để tạo một ví gộp
  2. In số tiền trong ví gộp
  3. So sánh ví gộp với ví thứ ba bằng < và in kết quả (true hoặc false)
  4. So sánh ví gộp với ví thứ ba bằng > và in kết quả (true hoặc false)

Ví dụ, nếu đầu vào là 50, 30 và 100, đầu ra sẽ là:

80
true
false

Ví thứ nhất (50) cộng với ví thứ hai (30) tạo thành ví gộp có 80. Vì 80 nhỏ hơn 100 nên phép so sánh thứ nhất cho kết quả true. Vì 80 không lớn hơn 100 nên phép so sánh thứ hai cho kết quả false.

Tự làm thử

local Wallet = require('Wallet')

-- Đọc đầu vào
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())

-- TODO: Tạo ba ví với số tiền đã cho

-- TODO: Cộng ví thứ nhất và ví thứ hai để tạo ví gộp

-- TODO: In ra số tiền trong ví gộp

-- TODO: Dùng < để so sánh ví gộp với ví thứ ba rồi in ra kết quả

-- TODO: Dùng > để so sánh ví gộp với ví thứ ba rồi in ra kết quả

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