Trait الرسم
جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 49 من 61.
التحدي
سهللنبدأ في بناء نظام مستندات (Document System)! في هذا المشروع، ستقوم بإنشاء إطار عمل مرن لعرض مكونات واجهة المستخدم باستخدام كائنات السمات (trait objects). تبدأ الأساسيات بتعريف سمة Draw في ملف وحدة خاص بها.
ستقوم بإنشاء ملفين لتنظيم الكود الخاص بك:
draw.rs: قم بتعريف سمةDrawعامة مع طريقة واحدة تسمىdrawتأخذ&selfوتطبع المخرجات. ستعمل هذه السمة كعقد يجب على جميع مكونات واجهة المستخدم الوفاء به.main.rs: قم باستيراد وحدةdrawالخاصة بك وأنشئ هيكلًا (struct) بسيطًا يسمىLabelمع حقلtextعام (من نوعString). قم بتنفيذ سمةDrawلـLabelبحيث يؤدي استدعاءdraw()إلى طباعة نص التسمية.
في الدالة الرئيسية (main function)، قم بإنشاء مثيل لـ Label واستدعِ طريقة draw() الخاصة به لعرض النص.
سيتم توفير المدخلات التالية:
- سلسلة نصية تمثل نص التسمية
يجب أن تكون مخرجاتك هي نص التسمية تمامًا في سطر واحد.
جرّب بنفسك
mod draw;
use draw::Draw;
// TODO: قم بتعريف هيكل عام (public struct) يسمى Label مع حقل نصي عام (String)
// TODO: قم بتنفيذ سمة (trait) Draw لـ Label
// يجب أن تقوم طريقة draw بطباعة نص التسمية (label)
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let text = input.trim().to_string();
// TODO: قم بإنشاء مثيل (instance) من Label مع نص الإدخال
// TODO: قم باستدعاء طريقة draw() على التسمية (label)
}
جميع دروس Object Oriented Programming
1الأساليب والسلوك
مقدمة في كتل التنفيذمعامل Selfالأساليب القابلة للتعديلالدوال المرتبطةكتل تنفيذ متعددةتسلسل الأساليبمراجعة - إجراءات المستطيل4مشروع: حيوان أليف افتراضي
تعريف الحيوان الأليفإطعام الحيوان الأليف2التغليف والوحدات البرمجية
أساسيات الوحدات البرمجيةالكلمة المفتاحية Publicالحقول الخاصةدوال Gettersدوال Settersمراجعة - الخزانة الآمنة5الأنواع العامة (Generics)
الـ Structs العامةالـ Methods العامةأنواع عامة متعددةالـ Functions العامةمراجعة - Coordinate Point3التعدادات المتقدمة (Advanced Enums)
التعدادات مع البياناتالأساليب (Methods) في التعداداتمطابقة حالات البياناتمراجعة التعداد Optionملخص - التعداد Shape6تعريف الـ Traits
ما هي الـ Trait؟تنفيذ الـ Traitsالتنفيذات الافتراضيةتجاوز التنفيذات الافتراضيةالـ Traits مع المعاملاتملخص - مشغل الوسائط