Menu
Coddy logo textTech

Resumen - Reproductor multimedia

Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 34 de 61.

challenge icon

Desafío

Fácil

¡Vamos a construir un sistema de reproductor de medios simple que demuestre cómo diferentes tipos de medios pueden compartir una interfaz común a través de traits!

Organizarás tu código en tres archivos:

  • playable.rs: Define un trait público Playable con un método play(&self) que imprima una salida cuando se llame. Este trait representa la capacidad compartida que tendrán todos los tipos de medios.
  • media.rs: Crea dos structs públicos que implementen tu trait:
    • Audio — con un campo público title (String) que imprima Playing audio: {title} cuando se reproduzca
    • Video — con un campo público title (String) que imprima Playing video: {title} cuando se reproduzca
  • main.rs: Une tus módulos y crea instancias de ambos tipos de medios utilizando las entradas proporcionadas. Llama al método play en cada uno para demostrar cómo el mismo trait produce diferentes salidas según el tipo de medio.

Tu salida debe seguir este formato:

Playing audio: {audio_title}
Playing video: {video_title}

Por ejemplo, con las entradas Bohemian Rhapsody y The Matrix:

Playing audio: Bohemian Rhapsody
Playing video: The Matrix

Recibirás dos entradas: un título de audio y un título de video.

Pruébalo tú mismo

mod playable;
mod media;

use media::{Audio, Video};
use playable::Playable;

fn main() {
    // Leer entrada
    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: Crear una instancia de Audio con audio_title
    
    // TODO: Crear una instancia de Video con video_title
    
    // TODO: Llamar a play() en ambas instancias
}

Todas las lecciones de Object Oriented Programming