Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - مشغل الوسائط

جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 34 من 61.

challenge icon

التحدي

سهل

لنقم ببناء نظام مشغل وسائط بسيط يوضح كيف يمكن لأنواع الوسائط المختلفة مشاركة واجهة برمجية مشتركة من خلال السمات (traits)!

ستقوم بتنظيم الكود الخاص بك عبر ثلاثة ملفات:

  • playable.rs: قم بتعريف سمة عامة Playable مع طريقة play(&self) تقوم بطباعة مخرجات عند استدعائها. تمثل هذه السمة القدرة المشتركة التي ستتمتع بها جميع أنواع الوسائط.
  • media.rs: قم بإنشاء هيكلين (structs) عامين ينفذان السمة الخاصة بك:
    • Audio — مع حقل title عام (String) يطبع Playing audio: {title} عند تشغيله
    • Video — مع حقل title عام (String) يطبع Playing video: {title} عند تشغيله
  • main.rs: اجمع الوحدات (modules) معاً وقم بإنشاء مثيلات (instances) لكلا نوعي الوسائط باستخدام المدخلات المقدمة. استدعِ طريقة 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 باستخدام audio_title
    
    // TODO: إنشاء مثيل Video باستخدام video_title
    
    // TODO: استدعاء play() على كلا المثيلين
}

جميع دروس Object Oriented Programming