Menu
Coddy logo textTech

Recapitulação - Media Player

Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 34 de 61.

challenge icon

Desafio

Fácil

Vamos construir um sistema simples de player de mídia que demonstra como diferentes tipos de mídia podem compartilhar uma interface comum através de traits!

Você organizará seu código em três arquivos:

  • playable.rs: Defina uma trait pública Playable com um método play(&self) que imprime uma saída quando chamado. Esta trait representa a capacidade compartilhada que todos os tipos de mídia terão.
  • media.rs: Crie duas structs públicas que implementam sua trait:
    • Audio — com um campo público title (String) que imprime Playing audio: {title} quando reproduzido
    • Video — com um campo público title (String) que imprime Playing video: {title} quando reproduzido
  • main.rs: Reúna seus módulos e crie instâncias de ambos os tipos de mídia usando as entradas fornecidas. Chame o método play em cada uma para demonstrar como a mesma trait produz saídas diferentes com base no tipo de mídia.

Sua saída deve seguir este formato:

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

Por exemplo, com as entradas Bohemian Rhapsody e The Matrix:

Playing audio: Bohemian Rhapsody
Playing video: The Matrix

Você receberá duas entradas: um título de áudio e um título de vídeo.

Experimente você mesmo

mod playable;
mod media;

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

fn main() {
    // Ler 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: Criar uma instância de Audio com audio_title
    
    // TODO: Criar uma instância de Video com video_title
    
    // TODO: Chamar play() em ambas as instâncias
}

Todas as lições de Object Oriented Programming