Özet - Media Player
Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 34 / 61.
Görev
KolayTrait'ler aracılığıyla farklı medya türlerinin ortak bir arayüzü nasıl paylaşabileceğini gösteren basit bir medya oynatıcı sistemi oluşturalım!
Kodunuzu üç dosyada düzenleyeceksiniz:
playable.rs: Çağrıldığında çıktı yazdıran birPlayabletrait'ini veplay(&self)metodunu public olarak tanımlayın. Bu trait, tüm medya türlerinin sahip olacağı ortak yeteneği temsil eder.media.rs: Trait'inizi uygulayan iki public struct oluşturun:Audio: Oynatıldığındatitleyazdıran public birPlaying audio: {title}alanına (String) sahipVideo: Oynatıldığındatitleyazdıran public birPlaying video: {title}alanına (String) sahip
main.rs: Modüllerinizi bir araya getirin ve sağlanan girdileri kullanarak her iki medya türünün örneklerini oluşturun. Aynı trait'in medya türüne göre nasıl farklı çıktılar ürettiğini göstermek için her birindeplaymetodunu çağırın.
Çıktınız şu formatı izlemelidir:
Playing audio: {audio_title}
Playing video: {video_title}Örneğin, girdiler Bohemian Rhapsody ve The Matrix olduğunda:
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ştur
// TODO: video_title ile bir Video örneği oluştur
// TODO: Her iki örnek üzerinde de play() çağır
}
Nesne Yönelimli Programlama 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 PlayerKendi başına pratik yap: Online Rust derleyicisi