Menu
Coddy logo textTech

요약 - 미디어 플레이어

Coddy Rust 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 34번째.

challenge icon

챌린지

쉬움

트레이트(traits)를 통해 서로 다른 미디어 유형이 어떻게 공통 인터페이스를 공유할 수 있는지 보여주는 간단한 미디어 플레이어 시스템을 구축해 봅시다!

코드는 세 개의 파일로 구성됩니다:

  • playable.rs: 호출될 때 출력을 프린트하는 play(&self) 메서드를 가진 공개(public) Playable 트레이트를 정의합니다. 이 트레이트는 모든 미디어 유형이 갖게 될 공유 기능을 나타냅니다.
  • media.rs: 트레이트를 구현하는 두 개의 공개 구조체(structs)를 생성합니다:
    • Audio — 공개 title 필드(String)를 가지며, 재생 시 "Playing audio: {}" 형식을 출력합니다.
    • Video — 공개 title 필드(String)를 가지며, 재생 시 "Playing video: {}" 형식을 출력합니다.
  • main.rs: 모듈들을 하나로 모으고 제공된 입력을 사용하여 두 미디어 유형의 인스턴스를 생성합니다. 각 인스턴스에서 play 메서드를 호출하여 동일한 트레이트가 미디어 유형에 따라 어떻게 다른 출력을 생성하는지 보여줍니다.

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

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

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

Playing audio: Bohemian Rhapsody
Playing video: The Matrix

오디오 제목과 비디오 제목이라는 두 개의 입력을 받게 됩니다.

직접 해보기

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() 호출
}

Object Oriented Programming의 모든 레슨