Özet - Media Player
Coddy'nin Rust Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 34 / 61.
Görev
KolayFarklı medya türlerinin trait'ler aracılığıyla ortak bir arayüzü nasıl paylaşabileceğini gösteren basit bir medya oynatıcı sistemi oluşturalım!
Kodunuzu üç dosya halinde düzenleyeceksiniz:
playable.rs: Çağrıldığında çıktı yazdıran birplay(&self)metoduna sahip genel birPlayabletrait'i tanımlayın. Bu trait, tüm medya türlerinin sahip olacağı ortak yeteneği temsil eder.media.rs: Trait'inizi uygulayan iki genel struct oluşturun:Audio— oynatıldığındaPlaying audio: {title}yazdıran genel birtitlealanına (String) sahipVideo— oynatıldığındaPlaying video: {title}yazdıran genel birtitlealanına (String) sahip
main.rs: Modüllerinizi bir araya getirin ve sağlanan girdileri kullanarak her iki medya türünden örnekler oluşturun. Aynı trait'in medya türüne bağlı olarak nasıl farklı çıktılar ürettiğini göstermek için her birindeplaymetodunu çağırın.
Çıktınız şu formatta olmalıdır:
Playing audio: {audio_title}
Playing video: {video_title}Örneğin, Bohemian Rhapsody ve The Matrix girdileriyle:
Playing audio: Bohemian Rhapsody
Playing video: The Matrixİki girdi alacaksınız: bir ses başlığı ve bir video başlığı.
Kendin dene
mod playable;
mod media;
use media::{Audio, Video};
use playable::Playable;
fn main() {
// Girdiyi oku
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: audio_title ile bir Audio örneği oluşturun
// TODO: video_title ile bir Video örneği oluşturun
// TODO: Her iki örnek üzerinde play() metodunu çağırın
}
Object Oriented Programming bölümündeki tüm dersler
1Metotlar ve Davranış
Uygulama Bloklarına GirişSelf ParametresiDeğiştirilebilir Metotlarİlişkili FonksiyonlarBirden Fazla Uygulama BloğuMetot ZincirlemeÖzet - Dikdörtgen Eylemleri4Proje: Sanal Evcil Hayvan
Evcil Hayvanı TanımlamaEvcil Hayvanı Besleme2Kapsülleme ve Modüller
Modül TemelleriPublic Anahtar KelimesiPrivate AlanlarGetter'larSetter'larÖzet - Güvenli Kasa5Generic Yapılar
Generic Struct'larGeneric MetotlarÇoklu Generic TürlerGeneric FonksiyonlarÖzet - Koordinat Noktası8Sınırlandırıcı Olarak Trait'ler
Trait Sınırlandırıcı SözdizimiÇoklu SınırlandırıcılarWhere CümleciğiTrait'ler ile Tip DöndürmeÖzet - Generic Yazıcı11Rust'ta Tasarım Kalıpları
Newtype KalıbıKompozisyonDrop Trait'iFrom ve IntoÖzet - Smart Pointer Mock3İleri Seviye Enum'lar
Veri İçeren Enum'larEnum MetotlarıVeri Varyantlarını EşlemeOption Enum'ına Yeniden BakışÖzet - Shape Enum6Trait Tanımlama
Trait Nedir?Traitleri UygulamaVarsayılan UygulamalarVarsayılanları Geçersiz KılmaParametreli TraitlerÖzet - Media Player