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

ملخص - التخزين العام

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 69 من 110.

challenge icon

التحدي

سهل

لنقم ببناء نظام تخزين عام (generic storage system) يجمع كل ما تعلمته عن المجموعات (collections) والأنواع العامة (generics)! ستقوم بإنشاء فئة Storage<T> يمكنها تخزين عناصر من أي نوع، واسترجاعها، وإمكانية التكرار عليها باستخدام حلقة for-in.

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

  • storage.dart: أنشئ نظام التخزين العام الخاص بك باستخدام فئتين:
    • فئة StorageIterator<T> التي تنفذ Iterator<T> لتمكين التكرار عبر العناصر المخزنة
    • فئة Storage<T> التي ترث من Iterable<T> مع القدرات التالية:
      • قائمة خاصة (private list) للاحتفاظ بالعناصر داخلياً
      • طريقة add(T item) لتخزين عنصر جديد
      • طريقة getAt(int index) تعيد العنصر الموجود في الفهرس المحدد
      • مسترجع (getter) باسم count يعيد عدد العناصر المخزنة
      • مسترجع (getter) باسم iterator يعيد StorageIterator للعناصر المخزنة
  • main.dart: استورد ملف التخزين الخاص بك واستعرض نظام التخزين العام مع أنواع مختلفة:
    • أنشئ Storage<String> وأضف ثلاثة أسماء مدن: 'Paris'، 'Tokyo'، 'Sydney'
    • اطبع عدد العناصر
    • اطبع العنصر الموجود في الفهرس 1
    • استخدم حلقة for-in لطباعة كل مدينة في سطر منفصل
    • اطبع سطراً فارغاً
    • أنشئ Storage<int> وأضف أربعة أرقام: 100، 200، 300، 400
    • استخدم طريقة where لتصفية القيم الأكبر من 150، ثم اطبع القائمة الناتجة

يجب أن يعمل نظام التخزين الخاص بك بسلاسة مع أي نوع مع الحفاظ على سلامة الأنواع (type safety) الكاملة. ولأنه يرث من Iterable، فإنه يحصل تلقائياً على إمكانية الوصول إلى طرق قوية مثل where و map و fold!

المخرجات المتوقعة:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

جرّب بنفسك

import 'storage.dart';

void main() {
  // TODO: لـ "cities" Storage<String> أنشئ
  // 'Paris', 'Tokyo', 'Sydney' :أضف ثلاث مدن

  // (Count: X :التنسيق) TODO: اطبع عدد العناصر

  // (Item at 1: X :التنسيق) TODO: اطبع العنصر الموجود في الفهرس 1

  // TODO: لطباعة كل مدينة في سطر مستقل for-in استخدم حلقة

  // TODO: اطبع سطراً فارغاً
  print('');

  // TODO: لـ "numbers" Storage<int> أنشئ
  // أضف أربعة أرقام: 100، 200، 300، 400

  // TODO: لتصفية القيم الأكبر من 150 where استخدم دالة
  // toList() ثم اطبع القائمة الناتجة باستخدام
}

جميع دروس Object Oriented Programming