פלטפורמת למידה מקוונת
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 107 מתוך 110.
אתגר
קלבואו נבנה פלטפורמת למידה מקוונת שמאגדת את כל מושגי ה-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: הדפיסו שוב את ההרשמה
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםספריות וייבואמבוא לתכנות מונחה עצמיםמחלקות לעומת אובייקטיםמילת המפתח thisמתודותמשתני מופעיסודות הבנאיחזרה: מחשבון פשוט4בטיחות מפני ערכי null
מבוא לבטיחות מפני ערכי nullניתן להקצאה ל-null לעומת לא ניתן להקצאה ל-nullהאופרטורים ? ו-!מילת המפתח Late ובטיחות מפני ערכי nullאופרטורים מודעי nullבטיחות מפני ערכי null במחלקותסיכום – מערכת פרופילי משתמשים7מחלקות מופשטות וממשקים
מחלקות מופשטותמתודות מופשטותממשקים ב-Dartממשקים משתמעיםמימוש לעומת הורשהממשקים מרוביםחזרה – מחשבון צורות10אוספים וגנריות
סקירה כללית של List, Set ו-Mapאוספים בטוחים מבחינת טיפוסיםמחלקות גנריותמתודות גנריותאילוצים גנרייםIterable ו-Iteratorסיכום – אחסון גנרי13מושגי OOP מתקדמים
הרכבה לעומת הורשהמתודות הרחבהמחלקות קריאותמחלקות אטומות (Dart 3)רשומות (Dart 3)תבניות והתאמה (3.0)טיפוסים מונים עם מתודות16פרויקט: ניהול ספרייה
סקירת הפרויקטמחלקות ספר ומשתמש2בנאים ב-Dart
בנאי ברירת מחדלבנאים בעלי שםרשימות אתחולבנאים קבועיםבנאי Factoryבנאים מפניםסיכום - בונה צורות5כימוס
חברים ציבוריים לעומת פרטייםמוסכמת הקידומת _פרטיות ברמת הספרייההעמקה ב-getters וב-settersהסתרת מידעסיכום – רשומות תלמידים8מיקסינים
מבוא למיקסיניםיצירת מיקסיניםשימוש במספר מיקסיניםמילת המפתח on במיקסיניםמיקסינים לעומת ירושהמיקסינים לעומת ממשקסיכום – מערכת בעלי החיים3מאפייני מחלקה
איברי מופע לעומת איברים סטטייםשדות final ו-constמשתני lateמתודות ושדות סטטייםGetters ו-Settersסיכום – מנהל חשבונות בנק6ירושה
ירושה בסיסיתמילת המפתח superדריסת מתודותהאנוטציה @overrideמילת המפתח final למחלקהבנאים וירושהסיכום – היררכיית עובדים9פולימורפיזם
יסודות הפולימורפיזםפולימורפיזם באמצעות ממשקיםבדיקת טיפוסים בזמן ריצההאופרטורים is ו-asמילת המפתח קווריאנטיסיכום — מעבד תשלומים12תכנות מונחה עצמים אסינכרוני
Future-ים ו-async/awaitיסודות ה-Streamsבקרי Streamsבנאים אסינכרונייםאסינכרוניות במתודות של מחלקהסיכום - אחזור נתוניםתרגלו בעצמכם: קומפיילר Dart אונליין