Menu
Coddy logo textTech

פלטפורמת למידה מקוונת

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

challenge icon

אתגר

קל

בואו נבנה פלטפורמת למידה מקוונת שמאגדת את כל מושגי ה-OOP שלמדת לאורך הקורס הזה. תיצור מערכת לניהול משתמשים, קורסים והרשמות באמצעות מחלקות מופשטות, הורשה, mixins וכימוס.

הפלטפורמה שלך תהיה מאורגנת בחמישה קבצים:

  • user.dart: צור מחלקה מופשטת User עם שדות פרטיים עבור _id (String) ו-_name (String), עם getters ציבוריים. כלול מתודה מופשטת String getRole() שעל המחלקות היורשות לממש. דרוס את toString() כך שתחזיר [role] name (id), כאשר role מתקבל מ-getRole().
  • student.dart: צור מחלקה Student שיורשת מ-User. על תלמידים להשתמש ב-mixin בשם ProgressTracking (שמוגדר בקובץ הזה), המספק מספר שלם פרטי _completedLessons (שמתחיל ב-0) עם getter, ואת המתודות completeLesson() להגדלת הערך ו-getProgressReport() שמחזירה Completed X lessons. על המחלקה Student לממש את getRole() כך שתחזיר Student.
  • instructor.dart: צור מחלקה Instructor שיורשת מ-User. למדריכים יש רשימה פרטית _coursesCreated (רשימה של Strings המייצגים שמות קורסים). כלול מתודה createCourse(String title) שמוסיפה את הכותרת לרשימה ומחזירה אותה. ממש את getRole() כך שתחזיר Instructor. הוסף getter בשם courseCount שמחזיר את מספר הקורסים שנוצרו.
  • enrollment.dart: צור מחלקה Enrollment שעוקבת אחר הרשמת תלמיד לקורס. עליה לכלול studentId (String),‏ courseName (String), ומשתנה בוליאני פרטי _isCompleted (שערך ברירת המחדל שלו הוא false) עם getter. כלול מתודה markComplete() שמגדירה את מצב ההשלמה ל-true. דרוס את toString() כך שתחזיר studentId enrolled in "courseName" - Status: Completed או Status: In Progress, בהתאם למצב ההשלמה.
  • main.dart: חבר את הכול יחד. צור מדריך (I001, Dr. Smith) ובקש ממנו ליצור שני קורסים: Dart Fundamentals ו-Advanced OOP. הדפס את המדריך ואת מספר הקורסים שלו בפורמט Courses created: X. צור תלמידה (S001, Alice), הדפס אותה, ואז בקש ממנה להשלים 3 שיעורים והדפס את דוח ההתקדמות שלה. צור הרשמה של Alice לקורס Dart Fundamentals, הדפס אותה, סמן אותה כהושלמה והדפס אותה שוב.

פלט צפוי:

[Instructor] Dr. Smith (I001)
Courses created: 2
[Student] Alice (S001)
Completed 3 lessons
S001 enrolled in "Dart Fundamentals" - Status: In Progress
S001 enrolled in "Dart Fundamentals" - Status: Completed

נסו בעצמכם

import 'user.dart';
import 'student.dart';
import 'instructor.dart';
import 'enrollment.dart';

void main() {
  // TODO: צרו מדריך עם id ‏"I001" ועם השם "Dr. Smith"
  
  // TODO: הנחו את המדריך ליצור שני קורסים: "Dart Fundamentals" ו-"Advanced OOP"
  
  // TODO: הדפיסו את המדריך (משתמש ב-toString())
  
  // TODO: הדפיסו "Courses created: X", כאשר X הוא ה-courseCount
  
  // TODO: צרו תלמיד עם id ‏"S001" ועם השם "Alice"
  
  // TODO: הדפיסו את התלמיד
  
  // TODO: הנחו את התלמיד להשלים 3 שיעורים (קראו ל-completeLesson()‏ 3 פעמים)
  
  // TODO: הדפיסו את דוח ההתקדמות של התלמיד
  
  // TODO: צרו הרשמה עבור Alice (S001) in "Dart Fundamentals"
  
  // TODO: הדפיסו את ההרשמה
  
  // TODO: סמנו את ההרשמה כהושלמה
  
  // TODO: הדפיסו שוב את ההרשמה
}

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

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