요약 - 미디어 플레이어
Coddy Rust 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 34번째.
챌린지
쉬움트레이트(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 Rhapsody와 The 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() 호출
}