Menu
Coddy logo textTech

요약 - 미디어 플레이어

Coddy Rust 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 34번째.

challenge icon

챌린지

쉬움

trait를 통해 서로 다른 미디어 유형이 공통 인터페이스를 공유할 수 있는 방식을 보여 주는 간단한 미디어 플레이어 시스템을 만들어 봅시다!

코드를 세 개의 파일로 구성합니다:

  • playable.rs: 호출될 때 출력을 표시하는 play(&self) method가 포함된 public Playable trait를 Define합니다. 이 trait는 모든 미디어 유형이 have 공유 기능을 나타냅니다.
  • media.rs: 다음 두 개의 public 구조체를 만들고 trait를 Implement합니다:
    • Audio: public title field(String)를 가지며, 재생될 때 Playing audio: {title}를 출력합니다.
    • Video: public title field(String)를 가지며, 재생될 때 Playing video: {title}를 출력합니다.
  • main.rs: 모듈을 하나로 모으고 제공된 입력을 사용하여 두 미디어 유형의 instances를 Create합니다. 각 인스턴스에서 play method를 Call하여 동일한 trait가 미디어 유형에 따라 서로 다른 출력을 생성하는 방식을 보여 줍니다.

출력은 다음 형식을 따라야 합니다:

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

예를 들어 입력이 Bohemian RhapsodyThe Matrix인 경우:

Playing audio: Bohemian Rhapsody
Playing video: The Matrix

두 개의 입력, 즉 audio title과 video title을 받습니다.

직접 해보기

mod playable;
mod media;

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

fn main() {
    // 입력 읽기
    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로 Audio 인스턴스 생성
    
    // TODO: video_title로 Video 인스턴스 생성
    
    // TODO: 두 인스턴스에서 play() 호출
}

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 Rust 컴파일러