סיכום – מיון מותאם אישית
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Java של Coddy. שיעור 46 מתוך 87.
אתגר
קלבואו נבנה מנהל אוסף ספרים שמשלב את כל מה שלמדת על שיטות מיוחדות ומיון. תיצור מחלקה Book עם מימוש מתאים של toString(), equals(), hashCode() וסדר טבעי באמצעות Comparable, לצד משווים חיצוניים לאפשרויות מיון גמישות.
תארגן את הקוד שלך בארבעה קבצים:
Book.java: צור מחלקה המייצגת ספר עם שלושה שדות פרטיים:title(String),author(String) ו-year(int). כלול בנאי ומתודות getter לכל השדות.המחלקה Book שלך צריכה לממש את
Comparable<Book>עם סדר טבעי לפיyearבסדר עולה (מהישן לחדש).דרוס את
toString()כך שתחזיר:[title] by [author] ([year])דרוס את
equals()כך ששני ספרים יהיו שווים כאשר יש להם אותוtitleוגם אותוauthor. דרוס אתhashCode()באמצעותObjects.hash()עם אותם השדות.TitleComparator.java: צור משווה שממיין ספרים לפי כותרת בסדר אלפביתי בסדר עולה (מ-A עד Z).AuthorComparator.java: צור משווה שממיין ספרים לפי שם המחבר בסדר אלפביתי בסדר עולה (מ-A עד Z).Main.java: חבר הכול יחד! תקבל קלט עבור שלושה ספרים, כל אחד בשורה נפרדת, בפורמט:title,author,yearצור
ArrayListשל ספרים והדגם את שלוש גישות המיון:- מיין לפי הסדר הטבעי (לפי השנה) והדפס כל ספר
- הדפס שורה ריקה
- מיין לפי הכותרת באמצעות
TitleComparatorוהדפס כל ספר - הדפס שורה ריקה
- מיין לפי שם המחבר באמצעות
AuthorComparatorוהדפס כל ספר
תקבל שלוש שורות קלט, שכל אחת מכילה נתוני ספר בפורמט: title,author,year
לדוגמה: 1984,George Orwell,1949
זכור לייבא את java.util.Objects בקובץ Book.java, את java.util.Comparator בקובצי המשווים, ואת java.util.ArrayList, java.util.Collections ו-java.util.Scanner בקובץ Main.java.
נסו בעצמכם
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// קראו שלושה ספרים מהקלט
String line1 = scanner.nextLine();
String line2 = scanner.nextLine();
String line3 = scanner.nextLine();
// TODO: נתחו כל שורה כדי לחלץ את הכותרת, המחבר והשנה
// רמז: השתמשו ב-split(",") כדי להפריד בין הערכים
// TODO: צרו אובייקטים מסוג Book מהנתונים שחולצו
// TODO: צרו ArrayList והוסיפו אליו את כל שלושת הספרים
// TODO: מיינו לפי הסדר הטבעי (לפי שנה) והדפיסו כל ספר
// TODO: הדפיסו שורה ריקה
// TODO: מיינו לפי כותרת באמצעות TitleComparator והדפיסו כל ספר
// TODO: הדפיסו שורה ריקה
// TODO: מיינו לפי מחבר באמצעות AuthorComparator והדפיסו כל ספר
}
}כל השיעורים ביחידה תכנות מונחה עצמים
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 אונליין