סקירת הפרויקט ותכנון UML
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Java של Coddy. שיעור 77 מתוך 87.
אתגר
קלבואו נתחיל את פרויקט מערכת ניהול הספרייה בבניית הבסיס: מחלקות הישויות המרכזיות שעליהן יתבסס כל השאר. האתגר הראשון מתמקד ביצירת מחלקות Book ו-User בעלות מבנה טוב, שמייצגות את הישויות המרכזיות של המערכת.
תארגן את הקוד שלך בשלושה קבצים:
Book.java: צור את המחלקהBookשמייצגת ספר בספרייה. לכל ספר צריכים להיות שדות פרטיים עבורisbn(String),title(String),author(String) ו-isAvailable(boolean, שערך ברירת המחדל שלו הואtrue). כלול בנאי שמקבל isbn, title ו-author. ספק שיטות getter מתאימות לכל השדות, וגם setter עבורisAvailable. הוסף שיטהgetDetails()שמחזירה מחרוזת מעוצבת:[isbn] title by author.User.java: צור את המחלקהUserשמייצגת חבר בספרייה. לכל משתמש צריכים להיות שדות פרטיים עבורid(String) ו-name(String). כלול בנאי שמקבל את שני הערכים, וספק שיטות getter לכל שדה. הוסף שיטהtoString()שמחזירה:User[id]: name.Main.java: חבר את המחלקות שלך כדי להדגים שהן פועלות כראוי. תקבל חמש קלטים: ISBN, כותרת הספר, מחבר הספר, ולאחר מכן מזהה המשתמש ושמו.צור
Bookבאמצעות שלושת הקלטים הראשונים ו-Userבאמצעות שני הקלטים האחרונים. הדפס את פרטי הספר באמצעותgetDetails(), ולאחר מכן הדפס אם הספר זמין בפורמטAvailable: trueאוAvailable: false. לבסוף, הדפס את המשתמש באמצעות שיטתtoString()שלו.
תקבל חמישה קלטים לפי הסדר: ISBN (String), כותרת (String), מחבר (String), מזהה משתמש (String) ושם משתמש (String).
לדוגמה, עבור הקלטים 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 ו-Alice Smith, הפלט שלך יהיה:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice Smithהמחלקות הבסיסיות האלה ישמשו אבני בניין לכל מערכת ניהול הספרייה. בשיעורים הבאים תרחיב אותן עם פונקציונליות של השאלת ספרים, יכולות חיפוש ועוד!
נסו בעצמכם
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// קראו את פרטי הספר
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// קראו את פרטי המשתמש
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: צרו אובייקט Book עם isbn, title ו-author
// TODO: צרו אובייקט User עם userId ו-userName
// TODO: הדפיסו את פרטי הספר באמצעות getDetails()
// TODO: הדפיסו אם הספר זמין (פורמט: "Available: true" או "Available: false")
// TODO: הדפיסו את המשתמש באמצעות toString()
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמבוא לתכנות מונחה עצמיםמחלקות לעומת אובייקטיםמילת המפתח thisמתודותשדות (מאפיינים)מתודת הבנאיהעמסת בנאיםחזרה – מחשבון פשוט4ירושה
ירושה בסיסית (extends)מילת המפתח superדריסת מתודות (@Override)שרשור בנאיםהמחלקה Objectירושה יחידה ורב־רמתיתלמה אין ירושה מרובה של מחלקותסיכום – היררכיית עובדים7מתודות מיוחדות ומחלקת Object
מתודת toString()equals() ו-hashCode()מתודת clone()compareTo() ו-Comparableהממשק Comparatorסיכום – מיון מותאם אישית10טיפול בחריגות ב-OOP
היררכיית מחלקות החריגותחריגות מותאמות אישיתשגיאות Checked לעומת Uncheckedתבנית Try With Resourcesחזרה – משתמש מאומת13פרויקט: ניהול ספרייה
סקירת הפרויקט ותכנון UMLמחלקות ספר ולקוחמערכת השאלת ספריםפונקציונליות חיפושממשק מנהלשילוב טיפול בחריגותבדיקות ושילוב2מצייני גישה ואנקפסולציה
סקירה של רמות הגישהמתודות Getter ו-Setterהסתרת מידעמילת המפתח finalסיכום – מנהל חשבון בנק5פולימורפיזם
יסודות העמסת מתודותדריסת מתודות (בזמן ריצה)המרה כלפי מעלה וכלפי מטההאופרטור instanceofמחלקות ומתודות מופשטותסיכום – מחשבון צורות8מושגי OOP מתקדמים
הרכבה מול ירושהאגרגציה מול הרכבהמחלקות פנימיות, מקוננות ואנונימיותEnums ומתודות של EnumRecords (Java 16+)מחלקות חתומות (Java 17+)3מאפייני מחלקה וחברים סטטיים
משתני מופע לעומת משתנים סטטייםמתודות סטטיותבלוקים סטטייםקבועים (static final)סיכום — מונה ומחלקת עזר6ממשקים ומחלקות מופשטות
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםמתודות ברירת מחדל וסטטיות בממשקמחלקות מופשטות לעומת ממשקיםממשקים פונקציונלייםסיכום – מערכת תשלומיםתרגלו בעצמכם: קומפיילר Java אונליין