Ôn tập: Nhà máy ô 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 11 trên 70.
Thử thách
DễHãy xây dựng một lớp Car hoàn chỉnh, kết hợp mọi thứ bạn đã học trong chương này! Bạn sẽ tạo một hệ thống nhà máy sản xuất xe, trong đó mỗi chiếc xe có mẫu xe và màu riêng, qua đó thể hiện cách tổ chức module và tạo các instance độc lập đúng cách.
Bạn sẽ sắp xếp code trong hai tệp:
Car.lua: Định nghĩa lớpCartheo mẫu nguyên mẫu tiêu chuẩn. Lớp cần có hàm khởi tạo:new(model, color)để tạo xe với các thuộc tính riêng. Thêm phương thức:describe()để mỗi chiếc xe tự giới thiệu.main.lua: Nạp module Car và tạo nhiều instance xe để cho thấy mỗi chiếc xe duy trì trạng thái độc lập của riêng mình.
Phương thức :describe() sẽ in ra theo đúng định dạng sau:
A [color] [model]Bạn sẽ nhận bốn đầu vào:
- Mẫu xe thứ nhất
- Màu của xe thứ nhất
- Mẫu xe thứ hai
- Màu của xe thứ hai
Trong tệp chính, hãy tạo hai chiếc xe bằng các đầu vào đã cho và để mỗi chiếc tự giới thiệu trên một dòng riêng.
Ví dụ: nếu đầu vào là Sedan, blue, Truck và red, đầu ra sẽ là:
A blue Sedan
A red TruckMỗi chiếc xe cần lưu mẫu xe và màu riêng, chứng minh rằng lớp của bạn tạo ra các instance thực sự độc lập.
Tự làm thử
-- Nạp module Car
local Car = require('Car')
-- Đọc các giá trị đầu vào
local model1 = io.read()
local color1 = io.read()
local model2 = io.read()
local color2 = io.read()
-- TODO: Tạo hai instance xe bằng Car:new()
-- TODO: Gọi :describe() trên từng xe để in ra mô tả của chú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