סיכום – היררכיית עובדים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Java של Coddy. שיעור 27 מתוך 87.
אתגר
קלבואו נבנה מערכת היררכיה מלאה של עובדים, המשלבת את כל מושגי ההורשה מהפרק הזה. תיצרו מבנה חברה שבו סוגים שונים של עובדים חולקים מאפיינים משותפים, אך יש להם התנהגויות ייחודיות משלהם.
תארגנו את הקוד שלכם בארבעה קבצים:
Employee.java: צרו מחלקת בסיס המשותפת לכל העובדים. לכל עובד יש שם ומשכורת. הוסיפו בנאי שמאתחל את שני השדות ומתודהgetDetails()שמחזירה:[name] earns $[salary]. הוסיפו גם מתודהwork()שמדפיסה:[name] is working.Manager.java: צרו מחלקה שיורשת מ-Employee. למנהלים יש שדה נוסף,teamSize, שמייצג כמה אנשים הם מנהלים. השתמשו ב-superכדי לטפל באתחול המחלקה ההורה. דרסו את המתודהwork()כך שתדפיס:[name] is managing a team of [teamSize]. הוסיפו מתודהgetManagerDetails()שמחזירה:Manager: [name] earns $[salary], Team size: [teamSize].Developer.java: צרו מחלקה נוספת שיורשת מ-Employee. למפתחים יש שדהlanguageהמציין את ההתמחות שלהם בתכנות. שוב, השתמשו ב-superעבור החלק של מחלקת ההורה. דרסו אתwork()כך שתדפיס:[name] is coding in [language]. הוסיפו מתודהgetDeveloperDetails()שמחזירה:Developer: [name] earns $[salary], Language: [language].Main.java: חברו כאן את כל החלקים. תקבלו חמש קלטים: שם של עובד, משכורת, גודל הצוות של המנהל, שם נוסף ושפת תכנות עבור המפתח. צרו Manager ו-Developer, ואז קראו עבור כל אחד מהם למתודת הפרטים הייעודית שלו ולאחר מכן למתודהwork().
תקבלו חמישה קלטים בסדר הבא: שם המנהל (String), משכורת המנהל (double), גודל הצוות (int), שם המפתח (String) ושפת התכנות (String). השתמשו במשכורת 75000.0 עבור המפתח.
עצבו את כל ערכי המשכורת עם 2 ספרות אחרי הנקודה העשרונית באמצעות String.format("%.2f", salary). הפלט שלכם צריך לכלול ארבע שורות בסך הכול — פרטי המנהל והתנהגות העבודה שלו, ולאחר מכן פרטי המפתח והתנהגות העבודה שלו.
נסו בעצמכם
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// קרא את הקלטים
String managerName = scanner.nextLine();
double managerSalary = scanner.nextDouble();
int teamSize = scanner.nextInt();
scanner.nextLine(); // קלוט את תו ירידת השורה
String developerName = scanner.nextLine();
String language = scanner.nextLine();
// השכר של Developer קבוע ועומד על 75000.0
double developerSalary = 75000.0;
// TODO: צור אובייקט Manager עם managerName, managerSalary ו-teamSize
// TODO: צור אובייקט Developer עם developerName, developerSalary ו-language
// TODO: הדפס את פרטי המנהל באמצעות getManagerDetails()
// TODO: קרא למתודה work() של המנהל
// TODO: הדפס את פרטי המפתח באמצעות getDeveloperDetails()
// TODO: קרא למתודה work() של המפתח
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמבוא לתכנות מונחה עצמיםמחלקות לעומת אובייקטיםמילת המפתח thisמתודותשדות (מאפיינים)מתודת הבנאיהעמסת בנאיםחזרה – מחשבון פשוט4ירושה
ירושה בסיסית (extends)מילת המפתח superדריסת מתודות (@Override)שרשור בנאיםהמחלקה Objectירושה יחידה ורב־רמתיתלמה אין ירושה מרובה של מחלקותסיכום – היררכיית עובדים7מתודות מיוחדות ומחלקת Object
מתודת toString()equals() ו-hashCode()מתודת clone()compareTo() ו-Comparableהממשק Comparatorסיכום – מיון מותאם אישית2מצייני גישה ואנקפסולציה
סקירה של רמות הגישהמתודות Getter ו-Setterהסתרת מידעמילת המפתח finalסיכום – מנהל חשבון בנק5פולימורפיזם
יסודות העמסת מתודותדריסת מתודות (בזמן ריצה)המרה כלפי מעלה וכלפי מטההאופרטור instanceofמחלקות ומתודות מופשטותסיכום – מחשבון צורות8מושגי OOP מתקדמים
הרכבה מול ירושהאגרגציה מול הרכבהמחלקות פנימיות, מקוננות ואנונימיותEnums ומתודות של EnumRecords (Java 16+)מחלקות חתומות (Java 17+)3מאפייני מחלקה וחברים סטטיים
משתני מופע לעומת משתנים סטטייםמתודות סטטיותבלוקים סטטייםקבועים (static final)סיכום — מונה ומחלקת עזר6ממשקים ומחלקות מופשטות
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםמתודות ברירת מחדל וסטטיות בממשקמחלקות מופשטות לעומת ממשקיםממשקים פונקציונלייםסיכום – מערכת תשלומיםתרגלו בעצמכם: קומפיילר Java אונליין