Trait Draw
Thuộc phần Lập trình hướng đối tượng trong hành trình Rust của Coddy. Bài học 49 trên 61.
Thử thách
DễHãy bắt đầu xây dựng Hệ thống tài liệu! Trong dự án này, bạn sẽ tạo một framework linh hoạt để kết xuất các thành phần giao diện người dùng bằng cách sử dụng các đối tượng trait. Nền tảng bắt đầu bằng việc định nghĩa trait Draw trong tệp module riêng.
Bạn sẽ tạo hai tệp để tổ chức code:
draw.rs: Định nghĩa traitDrawcông khai với một phương thức duy nhất tên làdraw, nhận&selfvà in ra đầu ra. Trait này sẽ là giao ước mà mọi thành phần giao diện người dùng phải đáp ứng.main.rs: Khai báo moduledrawvà tạo một struct đơn giản tên làLabelvới trườngtextcông khai (kiểuString). Triển khai traitDrawchoLabelđể khi gọidraw(), chương trình in ra văn bản của nhãn.
Trong hàm main, hãy tạo một instance Label và gọi phương thức draw() của nó để hiển thị văn bản.
Đầu vào sau sẽ được cung cấp:
- Một chuỗi đại diện cho văn bản của nhãn
Đầu ra phải chính xác là văn bản của nhãn trên một dòng.
Tự làm thử
mod draw;
use draw::Draw;
// TODO: Định nghĩa một struct công khai tên là Label với trường text công khai (String)
// TODO: Triển khai trait Draw cho Label
// Phương thức (method) draw cần in ra nội dung text của nhãn
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let text = input.trim().to_string();
// TODO: Tạo một instance Label với văn bản đầu vào
// TODO: Gọi phương thức draw() trên nhãn
}
Tất cả bài học trong Lập trình hướng đối tượng
1Phương thức và hành vi
Nhập môn khối triển khaiTham số selfPhương thức có thể thay đổiHàm liên kếtNhiều khối triển khaiNối chuỗi phương thứcÔn tập: thao tác với hình chữ nhật4Dự án: Thú cưng ảo
Định nghĩa thú cưngCho thú cưng ăn7Các trait tiêu chuẩn
Trait DebugTrait DisplayClone và CopyCác trait so sánh bằngÔn tập: Điểm có thể in ra2Tính đóng gói và module
Kiến thức cơ bản về moduleTừ khóa publicTrường riêng tưHàm lấy giá trịHàm thiết lập giá trịÔn tập: tủ khóa an toàn5Kiểu tổng quát
Cấu trúc tổng quátPhương thức tổng quátNhiều kiểu tổng quátHàm tổng quátÔn tập: điểm tọa độTự luyện tập: Trình biên dịch Rust online