Ôn tập: trình phát đa phương tiện
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 34 trên 61.
Thử thách
DễHãy xây dựng một hệ thống phát nội dung đa phương tiện đơn giản để minh họa cách các loại nội dung đa phương tiện khác nhau có thể dùng chung một giao diện thông qua trait!
Bạn sẽ sắp xếp code trong ba tệp:
playable.rs: Định nghĩa một trait công khaiPlayablevới phương thứcplay(&self), phương thức này in ra kết quả khi được gọi. Trait này thể hiện khả năng chung mà mọi loại nội dung đa phương tiện đều có.media.rs: Tạo hai struct công khai triển khai trait của bạn:Audio: có trườngtitlecông khai (String), in raPlaying audio: {title}khi phátVideo: có trườngtitlecông khai (String), in raPlaying video: {title}khi phát
main.rs: Kết hợp các module và tạo instance của cả hai loại nội dung đa phương tiện bằng các đầu vào được cung cấp. Gọi phương thứcplaytrên từng instance để minh họa cách cùng một trait tạo ra đầu ra khác nhau tùy theo loại nội dung đa phương tiện.
Đầu ra của bạn cần theo định dạng sau:
Playing audio: {audio_title}
Playing video: {video_title}Ví dụ: với đầu vào Bohemian Rhapsody và The Matrix:
Playing audio: Bohemian Rhapsody
Playing video: The MatrixBạn sẽ nhận hai đầu vào: tiêu đề âm thanh và tiêu đề video.
Tự làm thử
mod playable;
mod media;
use media::{Audio, Video};
use playable::Playable;
fn main() {
// Đọc đầu vào
let mut audio_title = String::new();
std::io::stdin().read_line(&mut audio_title).expect("Failed to read line");
let audio_title = audio_title.trim().to_string();
let mut video_title = String::new();
std::io::stdin().read_line(&mut video_title).expect("Failed to read line");
let video_title = video_title.trim().to_string();
// TODO: Tạo một instance Audio với audio_title
// TODO: Tạo một instance Video với video_title
// TODO: Gọi play() trên cả hai instance
}
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 độ3Enum nâng cao
Enum có dữ liệuPhương thức của enumKhớp các biến thể dữ liệuXem lại enum OptionÔn tập: enum Shape6Định nghĩa trait
Trait là gì?Triển khai traitCách triển khai mặc địnhGhi đè cách triển khai mặc địnhTrait có tham sốÔn tập: trình phát đa phương tiệnTự luyện tập: Trình biên dịch Rust online