Menu
Coddy logo textTech

סיכום – אחסון גנרי

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 69 מתוך 110.

challenge icon

אתגר

קל

בואו נבנה מערכת אחסון גנרית שמשלבת את כל מה שלמדת על אוספים וטיפוסים גנריים! תיצור מחלקה Storage<T> שתוכל לאחסן פריטים מכל סוג, לאחזר אותם ולאפשר מעבר עליהם באמצעות לולאת for-in.

תארגן את הקוד שלך בשני קבצים:

  • storage.dart: צור את מערכת האחסון הגנרית שלך עם שתי מחלקות:
    • מחלקה StorageIterator<T> שמממשת את Iterator<T> כדי לאפשר מעבר על הפריטים המאוחסנים
    • מחלקה Storage<T> שמרחיבה את Iterable<T> וכוללת את היכולות הבאות:
      • רשימה פרטית לאחסון פריטים באופן פנימי
      • מתודה add(T item) לאחסון פריט חדש
      • מתודה getAt(int index) שמחזירה את הפריט באינדקס הנתון
      • גטר count שמחזיר את מספר הפריטים המאוחסנים
      • גטר iterator שמחזיר StorageIterator עבור הפריטים המאוחסנים
  • main.dart: ייבא את קובץ האחסון שלך והדגם את האחסון הגנרי עם סוגים שונים:
    • צור Storage<String> והוסף שלושה שמות של ערים: 'Paris', 'Tokyo', 'Sydney'
    • הדפס את מספר הפריטים
    • הדפס את הפריט באינדקס 1
    • השתמש בלולאת for-in כדי להדפיס כל עיר בשורה נפרדת
    • הדפס שורה ריקה
    • צור Storage<int> והוסף ארבעה מספרים: 100, 200, 300, 400
    • השתמש במתודה where כדי לסנן ערכים שגדולים מ-150, ואז הדפס את הרשימה שהתקבלה

מערכת האחסון שלך צריכה לעבוד בצורה חלקה עם כל סוג, תוך שמירה על בטיחות טיפוסים מלאה. מכיוון שהיא מרחיבה את Iterable, היא מקבלת באופן אוטומטי גישה למתודות שימושיות כמו where, map ו-fold!

פלט צפוי:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

נסו בעצמכם

import 'storage.dart';

void main() {
  // TODO: צור Storage<String> עבור ערים
  // הוסף שלוש ערים: 'Paris', 'Tokyo', 'Sydney'

  // TODO: הדפס את מספר הפריטים (פורמט: "Count: X")

  // TODO: הדפס את הפריט באינדקס 1 (פורמט: "Item at 1: X")

  // TODO: השתמש בלולאת for-in כדי להדפיס כל עיר בשורה נפרדת

  // TODO: הדפס שורה ריקה
  print('');

  // TODO: צור Storage<int> עבור מספרים
  // הוסף ארבעה מספרים: 100, 200, 300, 400

  // TODO: השתמש במתודה where כדי לסנן ערכים הגדולים מ-150
  // לאחר מכן הדפס את הרשימה שהתקבלה באמצעות toList()
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Dart אונליין