Menu
Coddy logo textTech

סיכום – מערכת בעלי החיים

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

challenge icon

אתגר

קל

בואו נבנה מערכת שלמה של בעלי חיים שמשלבת את כל מה שלמדת על מיקסינים! תיצור מחלקת בסיס Animal, מיקסינים של התנהגות שמשתמשים במילת המפתח on, ומחלקות של בעלי חיים ספציפיים שמשלבות את היכולות האלה בדרכים שונות.

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

  • animal.dart: תגדיר את מחלקת הבסיס שממנה יורשים כל בעלי החיים:
    • מחלקת Animal עם מאפיין String name ובנאי
    • מתודה describe() שמדפיסה [name] is an animal
  • behaviors.dart: תייבא את קובץ בעלי החיים ותיצור שלושה מיקסינים של התנהגות, שכל אחד מהם מוגבל ל-Animal באמצעות מילת המפתח on:
    • מיקסין Swimming עם מתודה swim() שמדפיסה [name] is swimming
    • מיקסין Flying עם מתודה fly() שמדפיסה [name] is flying
    • מיקסין Walking עם מתודה walk() שמדפיסה [name] is walking
  • main.dart: תייבא את שני הקבצים ותיצור שלוש מחלקות של בעלי חיים שמשלבות ירושה עם שילובים שונים של מיקסינים:
    • מחלקת Duck שיורשת מ-Animal ומשתמשת בשלושת המיקסינים (Swimming, Flying, Walking)
    • מחלקת Fish שיורשת מ-Animal ומשתמשת רק במיקסין Swimming
    • מחלקת Bird שיורשת מ-Animal ומשתמשת במיקסינים Flying ו-Walking
    לאחר מכן, הדגם את היכולות של כל בעל חיים:
    • צור Duck בשם 'Donald', קרא ל-describe(), ואז ל-swim(), fly() ו-walk()
    • הדפס שורה ריקה
    • צור Fish בשם 'Nemo', קרא ל-describe(), ואז ל-swim()
    • הדפס שורה ריקה
    • צור Bird בשם 'Tweety', קרא ל-describe(), ואז ל-fly() ול-walk()

כל מיקסין יכול לגשת למאפיין name בזכות האילוץ on Animal, וכך מובטחת בטיחות טיפוסים תוך מתן אפשרות להרכיב התנהגויות בגמישות.

פלט צפוי:

Donald is an animal
Donald is swimming
Donald is flying
Donald is walking

Nemo is an animal
Nemo is swimming

Tweety is an animal
Tweety is flying
Tweety is walking

נסו בעצמכם

import 'animal.dart';
import 'behaviors.dart';

// TODO: צרו מחלקה Duck שיורשת מ-Animal ומשתמשת ב-mixins‏ Swimming, Flying, Walking
class Duck {
  // TODO: ממשו את המחלקה Duck
}

// TODO: צרו מחלקה Fish שיורשת מ-Animal ומשתמשת רק ב-mixin‏ Swimming
class Fish {
  // TODO: ממשו את המחלקה Fish
}

// TODO: צרו מחלקה Bird שיורשת מ-Animal ומשתמשת ב-mixins‏ Flying ו-Walking
class Bird {
  // TODO: ממשו את המחלקה Bird
}

void main() {
  // TODO: צרו Duck בשם 'Donald'
  // קראו ל-describe(), swim(), fly(), walk()
  
  // TODO: הדפיסו שורה ריקה
  
  // TODO: צרו Fish בשם 'Nemo'
  // קראו ל-describe(), swim()
  
  // TODO: הדפיסו שורה ריקה
  
  // TODO: צרו Bird בשם 'Tweety'
  // קראו ל-describe(), fly(), walk()
}

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

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