סיכום – היררכיית עובדים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 42 מתוך 110.
אתגר
קלבוא נבנה מערכת היררכיית עובדים מלאה, שמאגדת את כל מושגי הירושה מהפרק הזה. תיצור מחלקת עובד בסיסית ותרחיב אותה באמצעות תפקידים מיוחדים, שלכל אחד מהם התנהגויות ייחודיות משלו.
תארגן את הקוד שלך בשני קבצים:
employee.dart: הגדר כאן את היררכיית העובדים שלך:- מחלקת בסיס
Employeeעם המאפייניםString name,double salaryו-int id. הוסף בנאי ומתודהgetDetails()שמחזירה'[name] (ID: [id]) - Salary: $[salary]' - מחלקת
Managerשמרחיבה אתEmployeeומוסיפה מאפייןint teamSize. השתמש בפרמטרי super עבור השדות שעוברים בירושה. דרוס אתgetDetails()כך שתחזיר את הפרטים של מחלקת האב ולאחריהם', Team: [teamSize] members' - מחלקת
Developerשמרחיבה אתEmployeeומוסיפה מאפייןString language. דרוס אתgetDetails()כך שתחזיר את הפרטים של מחלקת האב ולאחריהם', Specializes in [language]' - מחלקת
TeamLeadשמרחיבה אתDeveloperומוסיפה מאפייןint projectCount. דרוס אתgetDetails()כדי להרחיב את הגרסה שלDeveloperבאמצעות הוספת', Leading [projectCount] projects'
- מחלקת בסיס
main.dart: ייבא את קובץ העובדים שלך וצור מופעים מכל סוגי העובדים:- צור
Employeeעם השם'Alice', משכורת50000.0ומזהה101 - צור
Managerעם השם'Bob', משכורת75000.0, מזהה102וגודל צוות8 - צור
Developerעם השם'Carol', משכורת65000.0, מזהה103ושפה'Dart' - צור
TeamLeadעם השם'David', משכורת80000.0, מזהה104, שפה'Python'ומספר פרויקטים3 - הדפס את התוצאה של קריאה ל-
getDetails()עבור כל עובד, שורה אחת לכל עובד
- צור
שים לב כיצד TeamLead מדגימה ירושה רב-רמתית — היא מרחיבה את Developer, שמרחיבה את Employee. כל רמה מוסיפה פרטים משלה, תוך שמירה על המידע ממחלקות האב באמצעות super.
פלט צפוי:
Alice (ID: 101) - Salary: $50000.0
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projectsנסו בעצמכם
import 'employee.dart';
void main() {
// TODO: צרו Employee עם השם 'Alice', שכר 50000.0 ו-id 101
// TODO: צרו Manager עם השם 'Bob', שכר 75000.0, id 102 ו-teamSize 8
// TODO: צרו Developer עם השם 'Carol', שכר 65000.0, id 103 ו-language 'Dart'
// TODO: צרו TeamLead עם השם 'David', שכר 80000.0, id 104, language 'Python' ו-projectCount 3
// TODO: הדפיסו את getDetails() עבור כל עובד, אחד בכל שורה
}
כל השיעורים ביחידה תכנות מונחה עצמים
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 אונליין