ݺߣ

ݺߣShare a Scribd company logo
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
‫אובייקטים‬–‫מופעים‬-Instances
‫קבוצות‬ ‫לתתי‬ ‫לרוב‬ ‫משתייכים‬ ‫אלו‬ ‫עצמים‬ .‫בעצמים‬ ‫מלא‬ ‫אותנו‬ ‫הסובב‬ ‫העולם‬‫ש‬‫קבוצות‬ ‫בעצמן‬ ‫מרכיבות‬‫של‬ ‫יותר‬ ‫גדולות‬
‫או‬ ‫יחסים‬ ‫פעמים‬ ‫הרבה‬ ‫יש‬ ‫הקבוצות‬ ‫בין‬ .‫הלאה‬ ‫וכן‬ ‫עצמים‬‫קבוצות‬ ‫אותן‬ ‫של‬ ‫חלוקה‬ ‫לבצע‬ ‫וניתן‬ ,‫עקיפים‬ ‫או‬ ‫ישירים‬ ,‫קשרים‬
.‫חולקות‬ ‫או‬ ‫מקיימות‬ ‫שהן‬ ‫מסוימות‬ ‫תכונות‬ ‫או‬ ,‫אופיין‬ ‫עפ"י‬
,‫מכאן‬‫ל‬ ‫המאפשר‬ ,‫החיים‬ ‫עולם‬ ,‫החיצון‬ ‫לעולם‬ ‫שקיים‬ ‫העמוק‬ ‫הקשר‬ ‫את‬ ‫להבין‬ ‫ניתן‬,‫עצמים‬ ‫כגון‬ ‫מושגים‬ ‫על‬ ‫לדבר‬ ‫נו‬,‫יישום‬
‫הורשה‬‫צורתיות‬ ‫רב‬ ,‫רב‬ ‫קונספטים‬ ‫ועוד‬‫האמתי‬ ‫בעולם‬ ‫קיומם‬ ‫בעצם‬ ‫טמון‬ ‫שמקורם‬ ‫ים‬,‫תחום‬ ‫אותו‬ ‫לתוך‬ ‫בהשאלה‬ ‫נלקחו‬
‫עצמים‬ ‫מונחה‬ ‫תכנות‬ ‫הקרוי‬ ‫המחשב‬ ‫במדעי‬‫מרשימות‬ ‫ויכולות‬ ‫חיים‬ ‫רוח‬ ‫שהכניס‬ ‫דבר‬ ,‫ממנו‬ ‫נפרד‬ ‫בלתי‬ ‫לחלק‬ ‫והפכו‬‫ל‬‫תחום‬
.‫בכלל‬ ‫התכנות‬
‫בעולם‬ ‫גם‬ ‫כך‬ ,‫האמתי‬ ‫בעולם‬ ‫כמו‬‫ה‬‫עצם‬ ‫לכל‬ ‫לשייך‬ ‫ניתן‬ ,‫העצמים‬ ‫מונחה‬ ‫תכנות‬‫(א‬)‫ובייקט‬‫אותו‬ ‫המאפיינות‬ ‫ופעולות‬ ‫תכונות‬
)..."‫"גובה‬ ,"‫אישי‬ '‫"מס‬ ,"‫משפחה‬ ‫"שם‬ ,"‫"שם‬ ‫הן‬ ‫שלו‬ ‫מהתכונות‬ ‫חלק‬ ,‫בצבא‬ ‫חייל‬ ‫לדוגמה‬ ‫(ניקח‬.
,‫בתכנות‬,‫האובייקט‬ ‫להיות‬ ‫יכול‬ ‫החייל‬‫ה‬ ‫התכונות‬‫ן‬‫משתנים‬‫לאמוד‬ ‫שניתן‬‫המתודות‬ ‫הן‬ ‫והפעולות‬ ‫בתוכם‬ ‫המוכל‬ ‫הערך‬ ‫ע"י‬
‫על‬ ‫לביצוע‬ ‫הניתנות‬‫האובייקט‬)..."‫למטרה‬ ‫"קלע‬ ,"‫אישי‬ '‫מס‬ ‫"החזר‬ ‫להיות‬ ‫יכול‬ ‫זה‬ ‫חייל‬ ‫של‬ ‫(במקרה‬.
‫להיות‬ ‫יכול‬ ‫אובייקט‬"‫"שערה‬ ‫כגון‬ ‫פיזי‬‫לנשור‬ ‫כמו‬ ‫ופעולות‬ ‫וחוזק‬ ‫צבע‬ ‫כמו‬ ‫תכונות‬ ‫עם‬‫מצב‬ ‫ובדיקת‬‫בריאותי‬‫או‬ ,‫אבסטרקטי‬
‫כגון‬"‫תספורת‬"‫להתחיל‬ ‫כמו‬ ‫ופעולות‬ ‫ועלות‬ ‫משך‬ ‫כמו‬ ‫תכונות‬ ‫עם‬,‫להסתיים‬‫התקדמות‬ ‫סטטוס‬ ‫להחזיר‬ ‫או‬.
‫ע"י‬ ‫יווצר‬ ‫אובייקט‬instantiation:‫הבא‬ ‫באופן‬ ‫מסוימת‬ ‫ממחלקה‬ )‫מופע‬ ‫(יצירת‬
ClassName objectName = new ClassName(/*parameters for the class's constructor if needed*/);
‫מופע‬ ‫משתני‬–Instance Variables
‫לאובייקט‬ ‫שייך‬ ‫אשר‬ ‫משתנה‬ ‫כל‬‫משתנ‬ ‫נקרא‬‫מופע‬ ‫ה‬,‫כזה‬ ‫משתנה‬‫מבלי‬ ‫האובייקט‬ ‫אותו‬ ‫עבור‬ ‫ייחודי‬ ‫באופן‬ ‫לשינוי‬ ‫ניתן‬
‫אם‬ ‫שגם‬ ‫כך‬ ,‫הסוג‬ ‫מאותו‬ ‫האובייקטים‬ ‫שאר‬ ‫על‬ ‫שישפיע‬‫אובייקטים‬ '‫מס‬‫ובטיפוסם‬ ‫בשמם‬ ‫הזהים‬ ‫במשתנים‬ ‫מחזיקים‬‫שינוי‬ ,
‫זה‬ ‫משתנה‬ ‫של‬‫עבור‬ ‫ורק‬ ‫אך‬ ‫ייעשה‬‫אותו‬ ‫של‬ ‫המשתנה‬‫השינוי‬ ‫נערך‬ ‫בו‬ ‫הספציפי‬ ‫האובייקט‬.
‫נניח‬‫אותם‬ ‫יהיו‬ ‫שלשניהם‬ ‫כך‬ ,‫בדיוק‬ ‫התבנית‬ ‫אותה‬ ‫לפי‬ ‫ייבנה‬ ‫מהם‬ ‫אחד‬ ‫כל‬ ,"‫"מכונית‬ ‫מטיפוס‬ ‫אובייקטים‬ ‫שני‬ ‫ויצרנו‬
‫אחד‬ ‫כל‬ ‫עבור‬ ‫שונה‬ ‫ערך‬ ‫להזין‬ ‫ניתן‬ ‫מהאובייקטים‬ ‫אחד‬ ‫ובכל‬ )"‫ייצור‬ ‫"שנת‬ ,"‫מייצרת‬ ‫"חברה‬ ‫(לדוגמה‬ ‫בדיוק‬ ‫המשתנים‬
.‫ביניהם‬ ‫תלות‬ ‫של‬ ‫קשר‬ ‫מבלי‬ ‫מהמשתנים‬
‫לה‬ ‫יכולה‬ ‫נוספת‬ ‫דוגמה‬‫כאשר‬ ‫למשל‬ ‫יות‬‫על‬ ‫משפיע‬ ‫זה‬ ‫אין‬ ,‫לצביקה‬ ‫שמו‬ ‫את‬ ‫לשנות‬ ‫מחליט‬ ‫ירון‬ ‫בשם‬ ‫אדם‬‫א‬ ‫של‬ ‫שמם‬‫נשים‬
‫עם‬ ‫אחרים‬ ‫אנשים‬ ‫על‬ ‫כולל‬ ‫אחרים‬.‫בלבד‬ ‫האדם‬ ‫אותו‬ ‫על‬ ‫אלא‬ ,‫ירון‬ ‫השם‬‫את‬ ‫שינה‬ ‫ירון‬‫שמו‬.‫האנשים‬ ‫כל‬ ‫של‬ ‫שמם‬ ‫את‬ ‫ולא‬
‫מופע‬ ‫משתנה‬ ‫להגדרת‬ ‫דוגמה‬:
class ClassName {
//Class Variables Section
//Instance Variables Section
private String id;
//Class Methods Section
//Instance Methods Section
}
‫אובייקט‬ ‫של‬ ‫החיים‬ ‫סיום‬–finalization
‫המתודה‬finalize()‫מ‬ ‫מגיעה‬-Object‫ה‬ ‫ע"י‬ ‫מורצת‬ ‫שהיא‬ ‫העובדה‬ ‫מלבד‬ ‫מיוחדת‬ ‫פעולה‬ ‫מבצעת‬ ‫שהיא‬ ‫מבלי‬-JVM‫בתהליך‬
‫לבצע‬ ‫ניתן‬ .'‫וכד‬ ‫משאבים‬ ‫שחרור‬ ,"‫פינות‬ ‫"סגירת‬ ‫לשם‬ ‫מיועדת‬ ‫היא‬ .‫האובייקט‬ ‫של‬ ‫חייו‬ ‫סיום‬overriding‫ע"מ‬ ‫למתודה‬
:‫כך‬ ‫בדיוק‬ ‫להיראות‬ ‫צריכה‬ ‫הגדרתה‬ ,‫זאת‬ ‫לעשות‬ ‫ניתן‬ ‫שיהיה‬ ‫וע"מ‬ ,‫מחדש‬ ‫פעולתה‬ ‫את‬ ‫להגדיר‬
protected void finalize() { /*New logic goes here*/ }
‫מתוך‬ ‫מתודה‬ ‫לאותה‬ ‫קריאה‬ ‫לבצע‬ ‫יש‬ ,‫אחרת‬ ‫למחלקה‬ ‫שמורישה‬ ‫מחלקה‬ ‫ע"י‬ ‫נדרסה‬ ‫המתודה‬ ‫אם‬finalize‫שהוגדרה‬
:‫הבא‬ ‫באופן‬ ‫היורשת‬ ‫במחלקה‬
super.finalize();
,‫זו‬ ‫במתודה‬ ‫לשימוש‬ ‫ההסברים‬ ‫למרות‬‫שה‬ ‫לכך‬ ‫ערובה‬ ‫אין‬-GarbageCollector‫את‬ ‫יפעיל‬finalize()‫בזמן‬‫"לבנות‬ ‫אין‬ ‫ולכן‬"
‫עליה‬‫שת‬‫תפקד‬‫באופן‬‫ודאי‬.
‫מחלקות‬-Classes
.‫מסוימת‬ ‫למחלקה‬ ‫להשתייך‬ ‫חייבת‬ ‫בתוכנית‬ ‫קוד‬ ‫שורת‬ ‫וכל‬ ‫מחלקות‬ ‫של‬ ‫ממקבץ‬ ‫בנויה‬ ‫בג'אווה‬ ‫תכנית‬ ‫כל‬‫לתאר‬ ‫ניתן‬‫מחלקה‬
‫כ‬"‫שבלונה‬".‫אובייקטים‬ ‫נוצרים‬ ‫ממנה‬
‫קיימים‬ ‫בו‬ ,"‫עובד‬ ‫"טופס‬ ‫לדוגמה‬ ‫ניקח‬ ,‫מחלקה‬ ‫מהי‬ ‫להמחיש‬ ‫ע"מ‬‫השדות‬
:‫עובד‬ '‫"מס‬XXX)‫המפעל‬ ‫ע"י‬ ‫מראש‬ ‫(ממולא‬ "
:‫"שם‬"
:‫"משפחה‬"
:.‫"ת.ז‬"
:‫"כתובת‬"
‫הטופס‬ ‫את‬ ‫משכפלים‬ ‫לעובד‬ ‫להפוך‬ ‫שמבקש‬ ‫אדם‬ ‫כל‬ ‫ועבור‬ )‫מאסטר‬ ‫(עותק‬ ‫כזה‬ ‫אחד‬ ‫טופס‬ ‫רק‬ ‫שיש‬ ‫ונניח‬‫אחת‬ ‫פעם‬‫כדי‬
.‫פרטיו‬ ‫את‬ ‫למלא‬ ‫שיוכל‬‫לא‬ ‫רק‬‫חר‬‫מילוי‬‫הטופס‬‫המשוכפל‬‫ה‬ ‫אדם‬ ‫אותו‬ ,‫מסוים‬ ‫אדם‬ ‫בידי‬‫ופך‬.‫לעובד‬
‫העובד‬ ‫טופס‬‫הנ"ל‬‫בשם‬ ‫למחלקה‬ ‫שקול‬Worker‫המשתנים‬ ‫בה‬ ‫מוצהרים‬ ‫אשר‬name, lastName, id, address.
,‫כאמור‬‫בטופס‬ ‫הפרטים‬ ‫את‬ ‫וממלא‬ ‫אדם‬ ‫מגיע‬ ‫כאשר‬,‫המשוכפל‬‫במפעל‬ ‫לעובד‬ ‫הופך‬ ‫הוא‬.‫אשר‬ ‫לאובייקט‬ ‫שקול‬ ‫אדם‬ ‫אותו‬
‫מהמחלקה‬ ‫נוצר‬Worker.‫אוביי‬‫ע"י‬ ‫בפועל‬ ‫יווצר‬ ‫כזה‬ ‫קט‬:‫הבאה‬ ‫השורה‬ ‫כגון‬ ‫קוד‬ ‫שורת‬
Worker manager=new Worker("John","Doe","098256558","22 Habonim St., Kfar Yam, Israel");
‫ניתן‬ ,)‫(המחלקה‬ ‫הטופס‬ ‫את‬ ‫בידנו‬ ‫שיש‬ ‫מרגע‬‫לקבל‬( ‫עובדים‬ ‫ועוד‬ ‫עוד‬‫ועוד‬ ‫עוד‬ ‫ליצור‬‫כל‬ ‫את‬ ‫שמאפיין‬ ‫ומה‬ )‫אובייקטים‬
‫העובדים‬‫הוא‬ ,‫הללו‬,‫משפחתם‬ ‫שם‬ ,‫שמם‬ ‫את‬ ‫המפעל‬ ‫שומר‬ ‫כולם‬ ‫לגבי‬ :‫המפעל‬ ‫מבחינת‬ ‫המאפיינים‬ ‫אותם‬ ‫את‬ ‫יש‬ ‫שלכולם‬
( ‫וכתובת‬ .‫ת.ז‬‫א‬ ‫מכילים‬‫ואות‬ ‫המשתנים‬ ‫אותם‬ ‫ת‬)‫המתודות‬ ‫ן‬‫ש‬ ‫כמובן‬ ,‫(ערכי‬ ‫שונים‬ ‫שמות‬ ‫כגון‬ ,‫שונים‬ ‫נתונים‬ ‫העובדים‬ ‫לכל‬
‫משתנים‬‫לאובייקט‬ ‫אובייקט‬ ‫בין‬ ‫שונים‬‫וטיפוסי‬ ‫שמות‬ ‫אותם‬ ‫אך‬ ,‫משתנים‬).
‫יכולות‬ ,‫זאת‬ ‫עם‬ .‫המחלקה‬ ‫שם‬ ‫כמו‬ ‫בדיוק‬ ‫השם‬ ‫באותו‬ ‫הוא‬ ‫הקובץ‬ ‫שם‬ ‫כאשר‬ ,‫משלה‬ ‫בקובץ‬ ‫תישמר‬ ‫מחלקה‬ ‫כל‬ ,‫לרוב‬
‫הגישה‬ ‫מציין‬ ‫בעלת‬ ‫להיות‬ ‫יכולה‬ ‫בקובץ‬ ‫המחלקות‬ ‫אחת‬ ‫שרק‬ ‫לזכור‬ ‫יש‬ ‫אך‬ ,‫הקוד‬ ‫קובץ‬ ‫באותו‬ ‫מחלקות‬ '‫מס‬ ‫להופיע‬public
.‫לפיה‬ ‫נקבע‬ ‫הקובץ‬ ‫ששם‬ ‫זו‬ ‫היא‬ ‫מחלקה‬ ‫ואותה‬
‫מחלקה‬:‫הבא‬ ‫באופן‬ ‫תוגדר‬
public/*(or none for package-friendly)*/ class ClassName {
//Class Variables Section
//Instance Variables Section
//Class Methods Section
//Instance Methods Section
}
‫מחלקה‬ ‫משתני‬-‫סטטיים‬ ‫משתנים‬–Static Variables
,‫קודם‬ ‫הזכרנו‬‫שכל‬ ‫כך‬ ,‫מחלקה‬ ‫להגדיר‬ ‫קבוצה‬ ‫כל‬ ‫ועבור‬ ‫משותף‬ ‫מכנה‬ ‫בעלות‬ ‫לקבוצות‬ ‫לשייך‬ ‫ניתן‬ ‫שונים‬ ‫שאובייקטים‬
‫התכונות‬ ‫אותן‬ ‫כל‬ ‫את‬ ‫בדיוק‬ ,‫השבלונה‬ ‫מאותה‬ ‫נוצר‬ ‫שהוא‬ ‫לעובדה‬ ‫בהתאם‬ ,‫יכיל‬ ,‫מסוימת‬ ‫ממחלקה‬ ‫שייווצר‬ ‫אובייקט‬
‫משתני/מתו‬ ‫כאמור‬ ‫נקראים‬ ‫אלו‬ ‫ומתודות‬ ‫משתנים‬ .‫במחלקה‬ ‫שמוגדרות‬ ‫והפעולות‬.‫מופע‬ ‫דות‬
‫משתני‬ .‫המחלקה‬ ‫עבור‬ ‫אחת‬ ‫פעם‬ ‫אלא‬ ,‫אובייקט‬ ‫כל‬ ‫עבור‬ ‫נוצרים‬ ‫לא‬ ‫אלו‬ ,‫סטטיים‬ ‫משתנים/מתודות‬ ‫גם‬ ‫קיימים‬ ,‫לעומתם‬
‫מעיין‬ ,‫כולה‬ ‫המחלקה‬ ‫את‬ ‫משמשים‬ ‫או‬ ‫המאפיינים‬ ‫נתונים‬ ‫להכיל‬ ‫תפקידם‬ ‫אלו‬ ‫סטטיים‬ ‫מחלקה‬shared resource‫ומתודות‬ ,
‫מסוי‬ ‫אובייקט‬ ‫על‬ ‫פועלות‬ ‫אינן‬ ‫סטטיות‬ ‫מחלקה‬.‫למחלקה‬ ‫גלובליות‬ ‫פעולות‬ ‫מבצעות‬ ‫אלא‬ ,‫מופע‬ ‫מתודות‬ ‫כמו‬ ‫ם‬
‫נמשיך‬ ,‫סטטיים‬ ‫משתנים‬ ‫הם‬ ‫מה‬ ‫להבין‬ ‫מנת‬ ‫על‬ ,‫קבוע‬ ‫עובד‬ ‫טופס‬ ‫לפי‬ ‫עובדים‬ ‫שמקבל‬ ‫המפעל‬ ‫של‬ ‫בדוגמה‬ ‫השתמשנו‬ ‫אם‬
,‫המפעל‬ ‫של‬ ‫הקמתו‬ ‫מרגע‬ :‫קודם‬ ‫הזכרנו‬ ‫שלא‬ ‫פרט‬ ‫ונציין‬ ‫זו‬ ‫דוגמה‬ ‫עם‬‫הע‬ ‫של‬ ‫קבלתו‬ ‫מעת‬ ,"‫עובדים‬ ‫"ספר‬ ‫המפעל‬ ‫מנהל‬‫ובד‬
‫בעמוד‬ ‫אותו‬ ‫פותח‬ ,‫העובדים‬ ‫ספר‬ ‫את‬ ‫מקבל‬ ,)‫הטופס‬ ‫את‬ ‫מילא‬ ‫(טרם‬ ‫במפעל‬ ‫לעבוד‬ ‫שהתחיל‬ ‫טרם‬ ,‫עובד‬ ‫כל‬ ,‫הראשון‬
‫מגיע‬ ‫שמואלי‬ ‫רן‬ ‫בשם‬ ‫ואדם‬ ‫שנניח‬ ‫כך‬ ,)‫משפחה‬ ‫ושם‬ ‫שם‬ ,‫רץ‬ ‫בסדר‬ ‫סידורי‬ '‫(מס‬ ‫הקיים‬ ‫הפורמט‬ ‫לפי‬ ‫שורה‬ ‫ומוסיף‬ ‫האחרון‬
‫השור‬ ‫לדוגמה‬ ‫הן‬ ‫בספר‬ ‫האחרונות‬ ‫והשורות‬ ,‫במפעל‬ ‫לעבוד‬:‫הבאות‬ ‫ות‬
070‫משה‬‫קדמי‬
070‫ליאורה‬‫שרון‬
:‫הבאה‬ ‫השורה‬ ‫תהיה‬ ‫שמואלי‬ ‫רן‬ ‫שיוסיף‬ ‫השורה‬
000‫רן‬‫שמואלי‬
.‫המניין‬ ‫מן‬ ‫לעובד‬ ‫ויהפוך‬ ‫עובד‬ ‫כרטיס‬ ‫ימלא‬ ,‫העובדים‬ ‫בספר‬ ‫שהתבקש‬ ‫הנתונים‬ ‫את‬ ‫שיזין‬ ‫לאחר‬
‫לגבי‬ ‫לנתונים‬ ‫לגשת‬ ‫היה‬ ‫יכול‬ ,‫המניין‬ ‫מן‬ ‫לעובד‬ ‫רן‬ ‫שההפך‬ ‫לפני‬ ‫שעוד‬ ,‫בעובדה‬ ‫נבחין‬,‫כן‬ ‫כמו‬ .‫קבלתו‬ ‫טרם‬ ‫במפעל‬ ‫העובדים‬
.)‫מהאחרון‬ ‫יותר‬ ‫(אחד‬ ‫בעצמו‬ ‫הוא‬ ‫יהיה‬ ‫עובד‬ '‫מס‬ ‫איזה‬ ‫ולהבין‬ ‫במפעל‬ ‫עובדים‬ ‫כרגע‬ ‫עובדים‬ ‫כמה‬ ‫לראות‬ ‫יכול‬
‫העובד‬ '‫מס‬ ‫עם‬ ‫העובדים‬ ‫רשימת‬ :)‫(המחלקה‬ ‫עצמו‬ ‫המפעל‬ ‫של‬ ‫הנתונים‬ ‫בעצם‬ ‫הם‬ .‫מחלקה‬ ‫משתני‬ ‫מתנהגים‬ ,‫האופן‬ ‫ובאותו‬
‫הסטטי‬ ‫המשתנה‬ ‫של‬ ‫(ערכו‬–‫ה‬‫לעובד‬ ‫שייכים‬ ‫אינם‬ ‫הם‬ ,)‫מחרוזות‬ ‫ושתי‬ ‫סידורי‬ '‫מס‬ ‫שמכיל‬ ‫מבנה‬ ‫הוא‬ ‫הסטטי‬ ‫משתנה‬
‫עובדים‬ ‫להיות‬ ‫קבלתם‬ ‫טרם‬ ‫אפילו‬ ‫במפעל‬ ‫העובדים‬ ‫לכל‬ ‫נגישים‬ ‫היו‬ ‫והם‬ )‫ספציפי‬ ‫(לאובייקט‬ ‫ספציפי‬‫יכולה‬ ‫למשתנה‬ ‫(גישה‬
.)‫מסוים‬ ‫מופע‬ ‫דרך‬ ‫לא‬ ‫אפילו‬ ,‫המחלקה‬ ‫דרך‬ ‫ישירות‬ ‫להיעשות‬
‫מתבצעת‬ ‫סטטי‬ ‫משתנה‬ ‫הגדרת‬‫המילה‬ ‫הוספת‬ ‫ע"י‬static,‫עליו‬ ‫ההצהרה‬ ‫בעת‬ ‫המשתנה‬ ‫טיפוס‬ ‫לפני‬:‫הבא‬ ‫באופן‬
class ClassName {
//Class Variables Section
static String id;
//Instance Variables Section
//Class Methods Section
//Instance Methods Section
}
‫למשתנה‬ ‫פניה‬ ‫וכל‬ ,‫מהמחלקה‬ ‫ייווצרו‬ ‫אובייקטים‬ ‫כמה‬ ‫משנה‬ ‫לא‬ ,‫יחיד‬ ‫משתנה‬ ‫עבור‬ ‫בזיכרון‬ ‫מקום‬ ‫והוקצה‬ ‫נוצר‬ ,‫זה‬ ‫באופן‬
.‫בזיכרון‬ ‫המקום‬ ‫לאותו‬ ‫ומכאן‬ ‫הרפרנס‬ ‫לאותו‬ ‫תתבצע‬ ‫אובייקט‬ ‫כל‬ ‫ע"י‬ ‫זה‬‫סטטיים‬ ‫משתנה/מתודה‬ ‫של‬ ‫והיצירה‬ ‫ההקצאה‬
‫יצירת‬ ‫לפני‬ ‫עוד‬ ,‫המחלקה‬ ‫של‬ ‫הטעינה‬ ‫בזמן‬ ‫כבר‬ ‫נעשות‬‫מאותחלים‬ ‫וערכיהם‬ ‫אובייקטים‬:‫דרכים‬ ‫משלוש‬ ‫באחת‬
‫ה‬‫ראשונה‬‫ידני‬ ‫באופן‬ ,-‫מפורש‬,.‫ההצהרה‬ ‫בעת‬ ‫השמה‬ ‫תוך‬
class ClassName {
//Class Variables Section
static int num=5;
//Instance Variables Section
//Class Methods Section
//Instance Methods Section
}
‫השנייה‬,‫בלוק‬ ‫דרך‬‫סטטיים‬ ‫למשתנים‬ ‫אתחול‬.:‫הבאה‬ ‫בצורה‬ ‫שנכתב‬ ‫סטטי‬ ‫בלוק‬ ‫זהו‬
class ClassName {
//Class Variables Section
static int num;
//Instance Variables Section
//Class Methods Section
//Instance Methods Section
Static {//‫סטטי‬ ‫בבלוק‬ ‫שימוש‬ ‫בה‬ ‫שיעשה‬ ‫ע"מ‬ ‫סטטית‬ ‫להיות‬ ‫חייבת‬ ‫פנימית‬ ‫מחלקה‬ .‫המחלקה‬ ‫בקובץ‬ ‫מקום‬ ‫בכל‬ ‫להופיע‬ ‫יכול‬ ‫סטטי‬ ‫בלוק‬
num=10;
}
}
‫השלישית‬.‫נוצרו‬ ‫ממנו‬ ‫הטיפוס‬ ‫של‬ ‫המחדל‬ ‫ברירת‬ ‫לערכי‬ ‫המשתנים‬ ‫יאותחלו‬ ,‫מפורש‬ ‫אתחול‬ ‫בהיעדר‬ ,
class ClassName {
//Class Variables Section
static int num; // ‫ל‬ ‫הזה‬ ‫ובמקרה‬ ‫לטיפוס‬ ‫בהתאם‬ ‫המחדל‬ ‫ברירת‬ ‫לערך‬ ‫יאותחל‬ ,‫סטטי‬ ‫בבלוק‬ ‫אתחול‬ ‫ואין‬ ‫במידה‬-0
//Instance Variables Section
//Class Methods Section
//Instance Methods Section
}
‫להופיע‬ ‫(יכולים‬ ‫האתחול‬ ‫בלוקי‬ ‫גם‬ ,‫סטטיים‬ ‫משתנים/מתודות‬ ‫של‬ ‫היצירה‬ ‫בסדר‬ ‫לקדימות‬ ‫בדומה‬‫יצירת‬ ‫טרם‬ ‫יבוצעו‬ ,)‫כמה‬
‫לזיכרון‬ ‫המחלקה‬ ‫של‬ ‫הטעינה‬ ‫בזמן‬ ,‫האובייקטים‬‫האחרון‬ ‫הערך‬ ,‫שונים‬ ‫אתחול‬ ‫בבלוקי‬ ‫בכמה‬ ‫אותחל‬ ‫משתנה‬ ‫אותו‬ ‫אם‬ ,
‫בו‬ ‫שיישאר‬ ‫זה‬ ‫הוא‬ ,‫שקיבל‬.
:‫דרכים‬ ‫משתי‬ ‫באחת‬ ‫תיעשה‬ ‫מחלקה‬ ‫למשתנה‬ ‫פנייה‬
‫בשם‬ ‫סטטי‬ ‫משתנה‬ ‫והוגדר‬ ‫(בהנחה‬countX‫במחלקה‬ClassName‫אובייק‬ ‫ונוצר‬‫בשם‬ ‫מהמחלקה‬ ‫ט‬objectName)
,‫הראשונה‬‫דרך‬ ‫פניה‬‫כל‬‫מהמחלקה‬ ‫אובייקט‬‫כזה‬ ‫נוצר‬ ‫באם‬ ,:
objectName.countX=10;
‫תוך‬ ,‫השנייה‬‫למחלקה‬ ‫ישירה‬ ‫פנייה‬‫ו‬‫מסוים‬ ‫אובייקט‬ ‫דרך‬ ‫לא‬:
ClassName.countX=10;
‫משתנים‬‫סטטיים‬‫סופיים‬–Final Static Variables
‫השמורה‬ ‫המילה‬ ‫את‬ ‫להוסיף‬ ‫נוכל‬ ,‫לקבוע‬ ‫סטטי‬ ‫משתנה‬ ‫להפוך‬ ‫נרצה‬ ‫אם‬final:‫הבא‬ ‫באופן‬
final static int CONSTVAR=5;
.‫למחלקה‬ ‫קבוע‬ ‫יש‬ ,‫הרגע‬ ‫ומאותו‬ ‫ההצהרה‬ ‫בשורת‬ ‫אתחול‬ ,‫כלומר‬
.‫זה‬ ‫בנושא‬ ‫הקונבנציה‬ ‫זו‬ ,‫גדולות‬ ‫באותיות‬ ‫ייכתבו‬ ‫קבועים‬ ‫של‬ ‫שמות‬ :‫נזכור‬
‫אובייקט‬ ‫כל‬ ‫עבור‬ ‫מחדש‬ ‫פעם‬ ‫כל‬ ‫יווצר‬ ‫הוא‬ ‫אחרת‬ ,)‫לאובייקט‬ ‫מאובייקט‬ ‫משתנה‬ ‫ערכו‬ ‫כן‬ ‫אם‬ ‫(אלא‬ ‫כסטטי‬ ‫קבוע‬ ‫להגדיר‬ ‫רצוי‬
!‫זיכרון‬ ‫משאבי‬ ‫מבחינת‬ ‫בזבזני‬ ‫וזה‬
‫מחלקות‬-‫המשך‬
‫מוגדרות‬ ‫ופעולות‬ ‫תכונות‬ ‫אילו‬ ‫לומר‬ ‫יכולים‬ ‫אנו‬ ,‫מסוים‬ ‫אובייקט‬ ‫על‬ ‫בהביטנו‬ ,‫כן‬ ‫אם‬‫בבואנו‬ ,‫כן‬ ‫ועל‬ ‫נוצר‬ ‫הוא‬ ‫ממנה‬ ‫במחלקה‬
,‫מכן‬ ‫לאחר‬ .‫שלנו‬ ‫בתכנית‬ ‫תפקיד‬ ‫לשחק‬ ‫שהולכים‬ ‫האובייקטים‬ ‫את‬ ‫בראשית‬ ‫לדמיין‬ ‫שננסה‬ ‫רצוי‬ ,‫תכנית‬ ‫של‬ ‫קוד‬ ‫קטע‬ ‫לכתוב‬
‫עלינו‬ ‫יש‬ ‫מחלקות‬ ‫אילו‬ ‫של‬ ‫הבנה‬ ‫לקבל‬ ,‫כך‬ ‫ומתוך‬ ‫עליהם‬ ‫להפעיל‬ ‫שניתן‬ ‫הפעולות‬ ‫ומהן‬ ‫תכונותיהם‬ ‫יהיו‬ ‫מה‬ ‫ולהבין‬ ‫לנסות‬
.‫להגדיר‬
‫לתכונות‬ ‫בנוסף‬(data members)‫ופעולות‬(function members)‫שלנו‬ ‫בתכנית‬ ‫אובייקטים‬ ‫בין‬ ‫יהיו‬ ‫קשרים‬ ‫אילו‬ ‫לדמיין‬ ‫נרצה‬ ,,
,‫כן‬ ‫כמו‬‫אובייקטים‬ ‫אולי‬ ‫מכילים‬ ‫אובייקטים‬ ‫אילו‬‫מהיותם‬ ‫כחלק‬ ‫אחרים‬‫הקשרים‬ ‫אותם‬ ‫הם‬ ‫אלו‬ ‫קשרים‬ ...‫שלם‬ ‫אובייקט‬
‫האובייקט‬ ‫לבין‬ ‫המחלקה‬ ‫הגדרת‬ ‫בין‬ ‫ליניארי‬ ‫יחס‬ ‫יש‬ ,‫כלומר‬ ,‫עצמן‬ ‫המחלקות‬ ‫בין‬ ‫הקיימים‬‫שייווצר‬.‫ממנה‬
‫כל‬‫ממחלקה‬ ‫נוצר‬ ‫אובייקט‬‫מ‬ ‫כתוצאה‬‫ביצוע‬instantiation‫מ‬‫ה‬ ‫אותה‬‫מחלקה‬‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫ע"י‬new‫המחלקה‬ ‫ושם‬
‫הבא‬ ‫באופן‬‫ו‬ ‫(מחרוזות‬‫גם‬ ‫ליצור‬ ‫ניתן‬ ‫מערכים‬‫ישירה‬ ‫השמה‬ ‫ע"י‬):
new ClassName();
‫ה‬ ‫בתהליך‬-instantiation‫האופרטור‬ ‫מקצה‬new‫בבנאי‬ ‫כך‬ ‫הוגדר‬ ‫באם‬ ‫אותו‬ ‫מאתחל‬ ,‫החדש‬ ‫האובייקט‬ ‫עבור‬ ‫זיכרון‬‫המחלקה‬
‫אליו‬ ‫שישלחו‬ ‫לפרמטרים‬ ‫ובהתאם‬‫ולסיום‬‫מ‬‫חזיר‬reference‫לאובייקט‬‫במשתנה‬ ‫שיוכל‬ ‫הערך‬ ‫וזהו‬.
‫לנו‬ ‫אין‬‫אפילו‬ ‫או‬ ‫שליטה‬‫גישה‬‫אחרות‬ ‫לשפות‬ ‫בניגוד‬ ,‫בזיכרון‬ ‫הפיזיות‬ ‫הכתובות‬ ‫למרחב‬‫את‬ ‫מהווה‬ ‫אינו‬ ‫שהמשתנה‬ ‫ומכאן‬
‫אליו‬ ‫רפרנס‬ ‫אלא‬ ,‫עצמו‬ ‫האובייקט‬.‫ב‬ ‫שימוש‬ ‫שנבצע‬ ‫שבמקרה‬ ‫כמובן‬-new‫אז‬ ,)‫(הרפרנס‬ ‫החזרה‬ ‫ערך‬ ‫את‬ ‫לשמור‬ ‫מבלי‬
‫ה‬ ‫ע"י‬ ‫ישוחרר‬ ,‫כך‬ ‫ובשל‬ ‫גישה‬ ‫חסר‬ ‫יהיה‬ ‫שנוצר‬ ‫האובייקט‬-garbage collector.‫שימוש‬ ‫מכלל‬ ‫שיצא‬ ‫למשאב‬ ‫כיאה‬
this
‫קורה‬ ‫זה‬ .‫הנוכחי‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫על‬ ‫לדבר‬ ‫לעתים‬ ‫צורך‬ ‫לנו‬ ‫יש‬ ,‫המחלקה‬ ‫של‬ ‫ההגדרה‬ ‫בתחום‬ ‫נמצאים‬ ‫אנו‬ ‫כאשר‬
‫כלשהי‬ ‫למתודה‬ ‫הנוכחי‬ ‫לאובייקט‬ ‫הרפרנס‬ ‫את‬ ‫לשלוח‬ ‫מעוניינים‬ ‫אנו‬ ‫כאשר‬‫אחרת‬ ‫מתודה‬ ‫של‬ ‫פעולתה‬ ‫מתוך‬‫אנו‬ ‫כאשר‬ ‫או‬ ,
‫נמצאים‬.‫המופע‬ ‫של‬ ‫משתנה‬ ‫ושם‬ ‫המתודה‬ ‫של‬ ‫מקומי‬ ‫משתנה‬ ‫שם‬ ‫בין‬ ‫שמות‬ ‫כפילות‬ ‫ונוצרת‬ ‫מתודה‬ ‫של‬ ‫הגדרתה‬ ‫בתחום‬
‫השמורה‬ ‫המילה‬ ‫באמצעות‬ ‫הנוכחי‬ ‫לאובייקט‬ ‫הרפרנס‬ ‫את‬ ‫נציין‬ ‫אנו‬ ,‫הללו‬ ‫המקרים‬ ‫בשני‬this‫נשלח‬ ‫פשוט‬ ,‫הראשון‬ ‫במקרה‬ .
‫את‬this‫הנוכחי‬ ‫לאובייקט‬ ‫כרפרנס‬‫את‬ ‫נציין‬ ‫השני‬ ‫ובמקרה‬this‫לפני‬‫ביניהם‬ ‫מפרידה‬ ‫נקודה‬ ‫כאשר‬ ‫המשתנה‬ ‫שם‬
‫אליו‬ ‫פונים‬ ‫שאנו‬ ‫זה‬ ‫הוא‬ ‫מהמשתנים‬ ‫מי‬ ‫לגבי‬ ‫כאינדיקציה‬‫כ‬ ,‫לומר‬:this.varName‫בעוד‬ ,‫המופע‬ ‫במשתנה‬ ‫שמדובר‬ ‫יציין‬
varName.‫המקומי‬ ‫במשתנה‬ ‫שמדובר‬ ‫יציין‬
public class ClassName {
int test;
public void setTest (int test) {
this.test=test;
}
}
‫מחלק‬‫ות‬‫אבסטרקטי‬‫ו‬‫ת‬–Abstract Classes
.‫מופע‬ ‫ממנה‬ ‫לייצר‬ ‫ניתן‬ ‫שלא‬ ‫מחלקה‬ ‫היא‬ ,‫אבסטרקטית‬ ‫מחלקה‬ ,‫לממשק‬ ‫בדומה‬
‫להופיע‬ ‫יכולים‬ ‫אבסטרקטית‬ ‫במחלקה‬ ,‫מממשק‬ ‫בשונה‬‫מימושים‬‫מפורשים‬.‫כאבסטרקטיות‬ ‫הוגדרו‬ ‫שאינן‬ ‫מתודות‬ ‫של‬
‫קווים‬ ‫רק‬ ‫מהווה‬ ‫לא‬ ‫זה‬ ‫מסוג‬ ‫ששבלונה‬ ‫רק‬ ,‫שבלונות‬ ‫ליצירת‬ ‫שבלונה‬ ‫מעיין‬ ,‫שוב‬ ,‫כללית‬ ‫תבנית‬ ‫להגדיר‬ ‫ניתן‬ ,‫זה‬ ‫באופן‬
‫כלליים‬‫והצהרות‬‫ה‬ ‫במחלקות‬ ‫להיות‬ ‫שצריכים‬ ‫והמשתנים‬ ‫המתודות‬ ‫עבור‬‫מממשו‬‫ת‬‫של‬ ‫במקרה‬ ‫שנעשה‬ ‫(כפי‬‫ה‬)‫ממשק‬‫אלא‬ ,
,‫שכאן‬‫הגדרת‬ ‫אופן‬ ‫את‬ ‫גם‬ ‫מהווה‬ ‫היא‬ ,‫מהמתודות‬ ‫חלק‬ ‫עבור‬‫ן‬-‫מימושן‬‫היורשות‬ ‫במחלקות‬.
‫לא‬ ,‫(כלומר‬ ‫ממנה‬ ‫ירושה‬ ‫באמצעות‬ ‫ייעשה‬ ‫אבסטרקטית‬ ‫במחלקה‬ ‫השימוש‬ ,‫בממשק‬ ‫ולא‬ ‫במחלקה‬ ‫מדובר‬ ‫זאת‬ ‫ובכל‬ ‫היות‬
‫ממחלקות‬ ‫לרשת‬ ‫ניתן‬‫נוספות‬‫לממש‬ ‫חובה‬ ‫חלה‬ ,‫מופע‬ ‫ממנה‬ ‫לייצר‬ ‫שרוצים‬ ‫מחלקה‬ ‫זו‬ ‫אם‬ ,‫היורשת‬ ‫ובמחלקה‬ ,)‫במקביל‬-
‫לדרוס‬‫ש‬ ‫המתודות‬ ‫כל‬ ‫את‬‫מהמחל‬ ‫הגיעו‬‫ו‬ ‫המורישה‬ ‫האבסטרקטית‬ ‫קה‬‫הו‬‫צהרו‬‫בה‬‫כ‬‫מתודות‬‫אבסטר‬‫המחלקה‬ ,‫אחרת‬ ,‫קטיות‬
‫היורשת‬‫מוגדרת‬ ‫להיות‬ ‫חייבת‬‫כאבסטרקטית‬.‫היא‬ ‫גם‬
:‫כך‬ ‫תיראה‬ ‫אבסטרקטית‬ ‫מחלקה‬ ‫של‬ ‫הגדרתה‬ ‫שורת‬
public abstract class AbstractClass {
public abstract void abstractMethod(); // ‫מתודה‬ ,‫ובתוכה‬:‫כך‬ ‫תיראה‬ ‫אבסטרקטית‬
}
‫אבסטרקטיות‬ ‫מתודות‬ ‫בה‬ ‫אין‬ ,‫כלומר‬ .‫מלא‬ ‫באופן‬ ‫ממומשות‬ ‫בה‬ ‫המתודות‬ ‫שכל‬ ‫כזו‬ ‫להיות‬ ‫גם‬ ‫יכולה‬ ‫אבסטרקטית‬ ‫מחלקה‬
‫לייצר‬ ‫ניתן‬ ‫אך‬ ,‫המחלקה‬ ‫של‬ ‫מופע‬ ‫לייצר‬ ‫ניתן‬ ‫שלא‬ ‫בכך‬ ‫תהיה‬ ‫כאן‬ ‫והמגבלה‬ ‫כלל‬‫ממחלקה‬ ‫שתירש‬ ,‫ריקה‬ ‫אפילו‬ ,‫מחלקה‬
‫נ‬ ‫כבר‬ ‫שלה‬ ‫ומופע‬ ‫זו‬ ‫אבסטרקטית‬.‫לייצר‬ ‫יהיה‬ ‫יתן‬
‫סופיות‬ ‫מחלקות‬–Final Classes
‫ולממש‬ ‫אחרת‬ ‫ממחלקה‬ ‫לרשת‬ ‫תוכל‬ ‫זו‬ ‫מחלקה‬ .‫הגדרתה‬ ‫את‬ ‫ולהרחיב‬ ‫ממנה‬ ‫לרשת‬ ‫ניתן‬ ‫יהיה‬ ‫שלא‬ ‫כך‬ ‫מחלקה‬ ‫להגדיר‬ ‫ניתן‬
."‫הירושה‬ ‫שושלת‬ ‫"סוף‬ ‫תהיה‬ ‫היא‬ ‫אך‬ ,‫ממשק‬
:‫הבא‬ ‫באופן‬ ‫הגדרה‬ ‫לבצע‬ ‫יש‬ ‫לסופית‬ ‫מחלקה‬ ‫להפוך‬ ‫ע"מ‬
public final class ClassName {
}
‫מראש‬ ‫מוגדרות‬ ‫מחלקות‬–defined Classes-Pre
‫שהוא‬ ‫משמעותו‬ ,‫שכזו‬ ‫מחלקה‬ ‫מסוג‬ ‫שמשתנה‬ ‫כך‬ ,‫כמחלקות‬ ‫בג'אווה‬ ‫עבורנו‬ ‫הוגדרו‬ ‫כבר‬ ,‫ושימושיים‬ ‫מוכרים‬ ‫נתונים‬ ‫מבני‬
,‫ערימה‬ :‫לדוגמה‬ ,‫מסוים‬ ‫במבנה‬ ‫אחרים‬ ‫באובייקטים‬ ‫להחזיק‬ ‫מיועד‬.'‫וכד‬ ‫מקושרת‬ ‫רשימה‬ ,‫וקטור‬
‫ע"מ‬:‫מהחבילה‬ ‫כולם‬ ‫את‬ ‫או‬ ‫הרצוי‬ ‫המבנה‬ ‫את‬ ‫לייבא‬ ‫יש‬ ,‫ואחרים‬ ‫אלו‬ ‫במבנים‬ ‫להשתמש‬
import java.util.*;
‫מהמבנים‬ ‫אובייקטים‬ ‫ליצור‬ ‫יהיה‬ ‫ניתן‬ ,‫הייבוא‬ ‫לאחר‬,‫לדוגמה‬ ,‫הקיימים‬:‫הבא‬ ‫באופן‬
Stack s=new Stack();
Vector v=new Vector();
LinkedList ll=new LinkedList();

More Related Content

ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים

  • 2. ‫אובייקטים‬–‫מופעים‬-Instances ‫קבוצות‬ ‫לתתי‬ ‫לרוב‬ ‫משתייכים‬ ‫אלו‬ ‫עצמים‬ .‫בעצמים‬ ‫מלא‬ ‫אותנו‬ ‫הסובב‬ ‫העולם‬‫ש‬‫קבוצות‬ ‫בעצמן‬ ‫מרכיבות‬‫של‬ ‫יותר‬ ‫גדולות‬ ‫או‬ ‫יחסים‬ ‫פעמים‬ ‫הרבה‬ ‫יש‬ ‫הקבוצות‬ ‫בין‬ .‫הלאה‬ ‫וכן‬ ‫עצמים‬‫קבוצות‬ ‫אותן‬ ‫של‬ ‫חלוקה‬ ‫לבצע‬ ‫וניתן‬ ,‫עקיפים‬ ‫או‬ ‫ישירים‬ ,‫קשרים‬ .‫חולקות‬ ‫או‬ ‫מקיימות‬ ‫שהן‬ ‫מסוימות‬ ‫תכונות‬ ‫או‬ ,‫אופיין‬ ‫עפ"י‬ ,‫מכאן‬‫ל‬ ‫המאפשר‬ ,‫החיים‬ ‫עולם‬ ,‫החיצון‬ ‫לעולם‬ ‫שקיים‬ ‫העמוק‬ ‫הקשר‬ ‫את‬ ‫להבין‬ ‫ניתן‬,‫עצמים‬ ‫כגון‬ ‫מושגים‬ ‫על‬ ‫לדבר‬ ‫נו‬,‫יישום‬ ‫הורשה‬‫צורתיות‬ ‫רב‬ ,‫רב‬ ‫קונספטים‬ ‫ועוד‬‫האמתי‬ ‫בעולם‬ ‫קיומם‬ ‫בעצם‬ ‫טמון‬ ‫שמקורם‬ ‫ים‬,‫תחום‬ ‫אותו‬ ‫לתוך‬ ‫בהשאלה‬ ‫נלקחו‬ ‫עצמים‬ ‫מונחה‬ ‫תכנות‬ ‫הקרוי‬ ‫המחשב‬ ‫במדעי‬‫מרשימות‬ ‫ויכולות‬ ‫חיים‬ ‫רוח‬ ‫שהכניס‬ ‫דבר‬ ,‫ממנו‬ ‫נפרד‬ ‫בלתי‬ ‫לחלק‬ ‫והפכו‬‫ל‬‫תחום‬ .‫בכלל‬ ‫התכנות‬ ‫בעולם‬ ‫גם‬ ‫כך‬ ,‫האמתי‬ ‫בעולם‬ ‫כמו‬‫ה‬‫עצם‬ ‫לכל‬ ‫לשייך‬ ‫ניתן‬ ,‫העצמים‬ ‫מונחה‬ ‫תכנות‬‫(א‬)‫ובייקט‬‫אותו‬ ‫המאפיינות‬ ‫ופעולות‬ ‫תכונות‬ )..."‫"גובה‬ ,"‫אישי‬ '‫"מס‬ ,"‫משפחה‬ ‫"שם‬ ,"‫"שם‬ ‫הן‬ ‫שלו‬ ‫מהתכונות‬ ‫חלק‬ ,‫בצבא‬ ‫חייל‬ ‫לדוגמה‬ ‫(ניקח‬. ,‫בתכנות‬,‫האובייקט‬ ‫להיות‬ ‫יכול‬ ‫החייל‬‫ה‬ ‫התכונות‬‫ן‬‫משתנים‬‫לאמוד‬ ‫שניתן‬‫המתודות‬ ‫הן‬ ‫והפעולות‬ ‫בתוכם‬ ‫המוכל‬ ‫הערך‬ ‫ע"י‬ ‫על‬ ‫לביצוע‬ ‫הניתנות‬‫האובייקט‬)..."‫למטרה‬ ‫"קלע‬ ,"‫אישי‬ '‫מס‬ ‫"החזר‬ ‫להיות‬ ‫יכול‬ ‫זה‬ ‫חייל‬ ‫של‬ ‫(במקרה‬. ‫להיות‬ ‫יכול‬ ‫אובייקט‬"‫"שערה‬ ‫כגון‬ ‫פיזי‬‫לנשור‬ ‫כמו‬ ‫ופעולות‬ ‫וחוזק‬ ‫צבע‬ ‫כמו‬ ‫תכונות‬ ‫עם‬‫מצב‬ ‫ובדיקת‬‫בריאותי‬‫או‬ ,‫אבסטרקטי‬ ‫כגון‬"‫תספורת‬"‫להתחיל‬ ‫כמו‬ ‫ופעולות‬ ‫ועלות‬ ‫משך‬ ‫כמו‬ ‫תכונות‬ ‫עם‬,‫להסתיים‬‫התקדמות‬ ‫סטטוס‬ ‫להחזיר‬ ‫או‬. ‫ע"י‬ ‫יווצר‬ ‫אובייקט‬instantiation:‫הבא‬ ‫באופן‬ ‫מסוימת‬ ‫ממחלקה‬ )‫מופע‬ ‫(יצירת‬ ClassName objectName = new ClassName(/*parameters for the class's constructor if needed*/); ‫מופע‬ ‫משתני‬–Instance Variables ‫לאובייקט‬ ‫שייך‬ ‫אשר‬ ‫משתנה‬ ‫כל‬‫משתנ‬ ‫נקרא‬‫מופע‬ ‫ה‬,‫כזה‬ ‫משתנה‬‫מבלי‬ ‫האובייקט‬ ‫אותו‬ ‫עבור‬ ‫ייחודי‬ ‫באופן‬ ‫לשינוי‬ ‫ניתן‬ ‫אם‬ ‫שגם‬ ‫כך‬ ,‫הסוג‬ ‫מאותו‬ ‫האובייקטים‬ ‫שאר‬ ‫על‬ ‫שישפיע‬‫אובייקטים‬ '‫מס‬‫ובטיפוסם‬ ‫בשמם‬ ‫הזהים‬ ‫במשתנים‬ ‫מחזיקים‬‫שינוי‬ , ‫זה‬ ‫משתנה‬ ‫של‬‫עבור‬ ‫ורק‬ ‫אך‬ ‫ייעשה‬‫אותו‬ ‫של‬ ‫המשתנה‬‫השינוי‬ ‫נערך‬ ‫בו‬ ‫הספציפי‬ ‫האובייקט‬. ‫נניח‬‫אותם‬ ‫יהיו‬ ‫שלשניהם‬ ‫כך‬ ,‫בדיוק‬ ‫התבנית‬ ‫אותה‬ ‫לפי‬ ‫ייבנה‬ ‫מהם‬ ‫אחד‬ ‫כל‬ ,"‫"מכונית‬ ‫מטיפוס‬ ‫אובייקטים‬ ‫שני‬ ‫ויצרנו‬ ‫אחד‬ ‫כל‬ ‫עבור‬ ‫שונה‬ ‫ערך‬ ‫להזין‬ ‫ניתן‬ ‫מהאובייקטים‬ ‫אחד‬ ‫ובכל‬ )"‫ייצור‬ ‫"שנת‬ ,"‫מייצרת‬ ‫"חברה‬ ‫(לדוגמה‬ ‫בדיוק‬ ‫המשתנים‬ .‫ביניהם‬ ‫תלות‬ ‫של‬ ‫קשר‬ ‫מבלי‬ ‫מהמשתנים‬ ‫לה‬ ‫יכולה‬ ‫נוספת‬ ‫דוגמה‬‫כאשר‬ ‫למשל‬ ‫יות‬‫על‬ ‫משפיע‬ ‫זה‬ ‫אין‬ ,‫לצביקה‬ ‫שמו‬ ‫את‬ ‫לשנות‬ ‫מחליט‬ ‫ירון‬ ‫בשם‬ ‫אדם‬‫א‬ ‫של‬ ‫שמם‬‫נשים‬ ‫עם‬ ‫אחרים‬ ‫אנשים‬ ‫על‬ ‫כולל‬ ‫אחרים‬.‫בלבד‬ ‫האדם‬ ‫אותו‬ ‫על‬ ‫אלא‬ ,‫ירון‬ ‫השם‬‫את‬ ‫שינה‬ ‫ירון‬‫שמו‬.‫האנשים‬ ‫כל‬ ‫של‬ ‫שמם‬ ‫את‬ ‫ולא‬ ‫מופע‬ ‫משתנה‬ ‫להגדרת‬ ‫דוגמה‬: class ClassName { //Class Variables Section //Instance Variables Section private String id; //Class Methods Section //Instance Methods Section }
  • 3. ‫אובייקט‬ ‫של‬ ‫החיים‬ ‫סיום‬–finalization ‫המתודה‬finalize()‫מ‬ ‫מגיעה‬-Object‫ה‬ ‫ע"י‬ ‫מורצת‬ ‫שהיא‬ ‫העובדה‬ ‫מלבד‬ ‫מיוחדת‬ ‫פעולה‬ ‫מבצעת‬ ‫שהיא‬ ‫מבלי‬-JVM‫בתהליך‬ ‫לבצע‬ ‫ניתן‬ .'‫וכד‬ ‫משאבים‬ ‫שחרור‬ ,"‫פינות‬ ‫"סגירת‬ ‫לשם‬ ‫מיועדת‬ ‫היא‬ .‫האובייקט‬ ‫של‬ ‫חייו‬ ‫סיום‬overriding‫ע"מ‬ ‫למתודה‬ :‫כך‬ ‫בדיוק‬ ‫להיראות‬ ‫צריכה‬ ‫הגדרתה‬ ,‫זאת‬ ‫לעשות‬ ‫ניתן‬ ‫שיהיה‬ ‫וע"מ‬ ,‫מחדש‬ ‫פעולתה‬ ‫את‬ ‫להגדיר‬ protected void finalize() { /*New logic goes here*/ } ‫מתוך‬ ‫מתודה‬ ‫לאותה‬ ‫קריאה‬ ‫לבצע‬ ‫יש‬ ,‫אחרת‬ ‫למחלקה‬ ‫שמורישה‬ ‫מחלקה‬ ‫ע"י‬ ‫נדרסה‬ ‫המתודה‬ ‫אם‬finalize‫שהוגדרה‬ :‫הבא‬ ‫באופן‬ ‫היורשת‬ ‫במחלקה‬ super.finalize(); ,‫זו‬ ‫במתודה‬ ‫לשימוש‬ ‫ההסברים‬ ‫למרות‬‫שה‬ ‫לכך‬ ‫ערובה‬ ‫אין‬-GarbageCollector‫את‬ ‫יפעיל‬finalize()‫בזמן‬‫"לבנות‬ ‫אין‬ ‫ולכן‬" ‫עליה‬‫שת‬‫תפקד‬‫באופן‬‫ודאי‬.
  • 4. ‫מחלקות‬-Classes .‫מסוימת‬ ‫למחלקה‬ ‫להשתייך‬ ‫חייבת‬ ‫בתוכנית‬ ‫קוד‬ ‫שורת‬ ‫וכל‬ ‫מחלקות‬ ‫של‬ ‫ממקבץ‬ ‫בנויה‬ ‫בג'אווה‬ ‫תכנית‬ ‫כל‬‫לתאר‬ ‫ניתן‬‫מחלקה‬ ‫כ‬"‫שבלונה‬".‫אובייקטים‬ ‫נוצרים‬ ‫ממנה‬ ‫קיימים‬ ‫בו‬ ,"‫עובד‬ ‫"טופס‬ ‫לדוגמה‬ ‫ניקח‬ ,‫מחלקה‬ ‫מהי‬ ‫להמחיש‬ ‫ע"מ‬‫השדות‬ :‫עובד‬ '‫"מס‬XXX)‫המפעל‬ ‫ע"י‬ ‫מראש‬ ‫(ממולא‬ " :‫"שם‬" :‫"משפחה‬" :.‫"ת.ז‬" :‫"כתובת‬" ‫הטופס‬ ‫את‬ ‫משכפלים‬ ‫לעובד‬ ‫להפוך‬ ‫שמבקש‬ ‫אדם‬ ‫כל‬ ‫ועבור‬ )‫מאסטר‬ ‫(עותק‬ ‫כזה‬ ‫אחד‬ ‫טופס‬ ‫רק‬ ‫שיש‬ ‫ונניח‬‫אחת‬ ‫פעם‬‫כדי‬ .‫פרטיו‬ ‫את‬ ‫למלא‬ ‫שיוכל‬‫לא‬ ‫רק‬‫חר‬‫מילוי‬‫הטופס‬‫המשוכפל‬‫ה‬ ‫אדם‬ ‫אותו‬ ,‫מסוים‬ ‫אדם‬ ‫בידי‬‫ופך‬.‫לעובד‬ ‫העובד‬ ‫טופס‬‫הנ"ל‬‫בשם‬ ‫למחלקה‬ ‫שקול‬Worker‫המשתנים‬ ‫בה‬ ‫מוצהרים‬ ‫אשר‬name, lastName, id, address. ,‫כאמור‬‫בטופס‬ ‫הפרטים‬ ‫את‬ ‫וממלא‬ ‫אדם‬ ‫מגיע‬ ‫כאשר‬,‫המשוכפל‬‫במפעל‬ ‫לעובד‬ ‫הופך‬ ‫הוא‬.‫אשר‬ ‫לאובייקט‬ ‫שקול‬ ‫אדם‬ ‫אותו‬ ‫מהמחלקה‬ ‫נוצר‬Worker.‫אוביי‬‫ע"י‬ ‫בפועל‬ ‫יווצר‬ ‫כזה‬ ‫קט‬:‫הבאה‬ ‫השורה‬ ‫כגון‬ ‫קוד‬ ‫שורת‬ Worker manager=new Worker("John","Doe","098256558","22 Habonim St., Kfar Yam, Israel"); ‫ניתן‬ ,)‫(המחלקה‬ ‫הטופס‬ ‫את‬ ‫בידנו‬ ‫שיש‬ ‫מרגע‬‫לקבל‬( ‫עובדים‬ ‫ועוד‬ ‫עוד‬‫ועוד‬ ‫עוד‬ ‫ליצור‬‫כל‬ ‫את‬ ‫שמאפיין‬ ‫ומה‬ )‫אובייקטים‬ ‫העובדים‬‫הוא‬ ,‫הללו‬,‫משפחתם‬ ‫שם‬ ,‫שמם‬ ‫את‬ ‫המפעל‬ ‫שומר‬ ‫כולם‬ ‫לגבי‬ :‫המפעל‬ ‫מבחינת‬ ‫המאפיינים‬ ‫אותם‬ ‫את‬ ‫יש‬ ‫שלכולם‬ ( ‫וכתובת‬ .‫ת.ז‬‫א‬ ‫מכילים‬‫ואות‬ ‫המשתנים‬ ‫אותם‬ ‫ת‬)‫המתודות‬ ‫ן‬‫ש‬ ‫כמובן‬ ,‫(ערכי‬ ‫שונים‬ ‫שמות‬ ‫כגון‬ ,‫שונים‬ ‫נתונים‬ ‫העובדים‬ ‫לכל‬ ‫משתנים‬‫לאובייקט‬ ‫אובייקט‬ ‫בין‬ ‫שונים‬‫וטיפוסי‬ ‫שמות‬ ‫אותם‬ ‫אך‬ ,‫משתנים‬). ‫יכולות‬ ,‫זאת‬ ‫עם‬ .‫המחלקה‬ ‫שם‬ ‫כמו‬ ‫בדיוק‬ ‫השם‬ ‫באותו‬ ‫הוא‬ ‫הקובץ‬ ‫שם‬ ‫כאשר‬ ,‫משלה‬ ‫בקובץ‬ ‫תישמר‬ ‫מחלקה‬ ‫כל‬ ,‫לרוב‬ ‫הגישה‬ ‫מציין‬ ‫בעלת‬ ‫להיות‬ ‫יכולה‬ ‫בקובץ‬ ‫המחלקות‬ ‫אחת‬ ‫שרק‬ ‫לזכור‬ ‫יש‬ ‫אך‬ ,‫הקוד‬ ‫קובץ‬ ‫באותו‬ ‫מחלקות‬ '‫מס‬ ‫להופיע‬public .‫לפיה‬ ‫נקבע‬ ‫הקובץ‬ ‫ששם‬ ‫זו‬ ‫היא‬ ‫מחלקה‬ ‫ואותה‬ ‫מחלקה‬:‫הבא‬ ‫באופן‬ ‫תוגדר‬ public/*(or none for package-friendly)*/ class ClassName { //Class Variables Section //Instance Variables Section //Class Methods Section //Instance Methods Section }
  • 5. ‫מחלקה‬ ‫משתני‬-‫סטטיים‬ ‫משתנים‬–Static Variables ,‫קודם‬ ‫הזכרנו‬‫שכל‬ ‫כך‬ ,‫מחלקה‬ ‫להגדיר‬ ‫קבוצה‬ ‫כל‬ ‫ועבור‬ ‫משותף‬ ‫מכנה‬ ‫בעלות‬ ‫לקבוצות‬ ‫לשייך‬ ‫ניתן‬ ‫שונים‬ ‫שאובייקטים‬ ‫התכונות‬ ‫אותן‬ ‫כל‬ ‫את‬ ‫בדיוק‬ ,‫השבלונה‬ ‫מאותה‬ ‫נוצר‬ ‫שהוא‬ ‫לעובדה‬ ‫בהתאם‬ ,‫יכיל‬ ,‫מסוימת‬ ‫ממחלקה‬ ‫שייווצר‬ ‫אובייקט‬ ‫משתני/מתו‬ ‫כאמור‬ ‫נקראים‬ ‫אלו‬ ‫ומתודות‬ ‫משתנים‬ .‫במחלקה‬ ‫שמוגדרות‬ ‫והפעולות‬.‫מופע‬ ‫דות‬ ‫משתני‬ .‫המחלקה‬ ‫עבור‬ ‫אחת‬ ‫פעם‬ ‫אלא‬ ,‫אובייקט‬ ‫כל‬ ‫עבור‬ ‫נוצרים‬ ‫לא‬ ‫אלו‬ ,‫סטטיים‬ ‫משתנים/מתודות‬ ‫גם‬ ‫קיימים‬ ,‫לעומתם‬ ‫מעיין‬ ,‫כולה‬ ‫המחלקה‬ ‫את‬ ‫משמשים‬ ‫או‬ ‫המאפיינים‬ ‫נתונים‬ ‫להכיל‬ ‫תפקידם‬ ‫אלו‬ ‫סטטיים‬ ‫מחלקה‬shared resource‫ומתודות‬ , ‫מסוי‬ ‫אובייקט‬ ‫על‬ ‫פועלות‬ ‫אינן‬ ‫סטטיות‬ ‫מחלקה‬.‫למחלקה‬ ‫גלובליות‬ ‫פעולות‬ ‫מבצעות‬ ‫אלא‬ ,‫מופע‬ ‫מתודות‬ ‫כמו‬ ‫ם‬ ‫נמשיך‬ ,‫סטטיים‬ ‫משתנים‬ ‫הם‬ ‫מה‬ ‫להבין‬ ‫מנת‬ ‫על‬ ,‫קבוע‬ ‫עובד‬ ‫טופס‬ ‫לפי‬ ‫עובדים‬ ‫שמקבל‬ ‫המפעל‬ ‫של‬ ‫בדוגמה‬ ‫השתמשנו‬ ‫אם‬ ,‫המפעל‬ ‫של‬ ‫הקמתו‬ ‫מרגע‬ :‫קודם‬ ‫הזכרנו‬ ‫שלא‬ ‫פרט‬ ‫ונציין‬ ‫זו‬ ‫דוגמה‬ ‫עם‬‫הע‬ ‫של‬ ‫קבלתו‬ ‫מעת‬ ,"‫עובדים‬ ‫"ספר‬ ‫המפעל‬ ‫מנהל‬‫ובד‬ ‫בעמוד‬ ‫אותו‬ ‫פותח‬ ,‫העובדים‬ ‫ספר‬ ‫את‬ ‫מקבל‬ ,)‫הטופס‬ ‫את‬ ‫מילא‬ ‫(טרם‬ ‫במפעל‬ ‫לעבוד‬ ‫שהתחיל‬ ‫טרם‬ ,‫עובד‬ ‫כל‬ ,‫הראשון‬ ‫מגיע‬ ‫שמואלי‬ ‫רן‬ ‫בשם‬ ‫ואדם‬ ‫שנניח‬ ‫כך‬ ,)‫משפחה‬ ‫ושם‬ ‫שם‬ ,‫רץ‬ ‫בסדר‬ ‫סידורי‬ '‫(מס‬ ‫הקיים‬ ‫הפורמט‬ ‫לפי‬ ‫שורה‬ ‫ומוסיף‬ ‫האחרון‬ ‫השור‬ ‫לדוגמה‬ ‫הן‬ ‫בספר‬ ‫האחרונות‬ ‫והשורות‬ ,‫במפעל‬ ‫לעבוד‬:‫הבאות‬ ‫ות‬ 070‫משה‬‫קדמי‬ 070‫ליאורה‬‫שרון‬ :‫הבאה‬ ‫השורה‬ ‫תהיה‬ ‫שמואלי‬ ‫רן‬ ‫שיוסיף‬ ‫השורה‬ 000‫רן‬‫שמואלי‬ .‫המניין‬ ‫מן‬ ‫לעובד‬ ‫ויהפוך‬ ‫עובד‬ ‫כרטיס‬ ‫ימלא‬ ,‫העובדים‬ ‫בספר‬ ‫שהתבקש‬ ‫הנתונים‬ ‫את‬ ‫שיזין‬ ‫לאחר‬ ‫לגבי‬ ‫לנתונים‬ ‫לגשת‬ ‫היה‬ ‫יכול‬ ,‫המניין‬ ‫מן‬ ‫לעובד‬ ‫רן‬ ‫שההפך‬ ‫לפני‬ ‫שעוד‬ ,‫בעובדה‬ ‫נבחין‬,‫כן‬ ‫כמו‬ .‫קבלתו‬ ‫טרם‬ ‫במפעל‬ ‫העובדים‬ .)‫מהאחרון‬ ‫יותר‬ ‫(אחד‬ ‫בעצמו‬ ‫הוא‬ ‫יהיה‬ ‫עובד‬ '‫מס‬ ‫איזה‬ ‫ולהבין‬ ‫במפעל‬ ‫עובדים‬ ‫כרגע‬ ‫עובדים‬ ‫כמה‬ ‫לראות‬ ‫יכול‬ ‫העובד‬ '‫מס‬ ‫עם‬ ‫העובדים‬ ‫רשימת‬ :)‫(המחלקה‬ ‫עצמו‬ ‫המפעל‬ ‫של‬ ‫הנתונים‬ ‫בעצם‬ ‫הם‬ .‫מחלקה‬ ‫משתני‬ ‫מתנהגים‬ ,‫האופן‬ ‫ובאותו‬ ‫הסטטי‬ ‫המשתנה‬ ‫של‬ ‫(ערכו‬–‫ה‬‫לעובד‬ ‫שייכים‬ ‫אינם‬ ‫הם‬ ,)‫מחרוזות‬ ‫ושתי‬ ‫סידורי‬ '‫מס‬ ‫שמכיל‬ ‫מבנה‬ ‫הוא‬ ‫הסטטי‬ ‫משתנה‬ ‫עובדים‬ ‫להיות‬ ‫קבלתם‬ ‫טרם‬ ‫אפילו‬ ‫במפעל‬ ‫העובדים‬ ‫לכל‬ ‫נגישים‬ ‫היו‬ ‫והם‬ )‫ספציפי‬ ‫(לאובייקט‬ ‫ספציפי‬‫יכולה‬ ‫למשתנה‬ ‫(גישה‬ .)‫מסוים‬ ‫מופע‬ ‫דרך‬ ‫לא‬ ‫אפילו‬ ,‫המחלקה‬ ‫דרך‬ ‫ישירות‬ ‫להיעשות‬ ‫מתבצעת‬ ‫סטטי‬ ‫משתנה‬ ‫הגדרת‬‫המילה‬ ‫הוספת‬ ‫ע"י‬static,‫עליו‬ ‫ההצהרה‬ ‫בעת‬ ‫המשתנה‬ ‫טיפוס‬ ‫לפני‬:‫הבא‬ ‫באופן‬ class ClassName { //Class Variables Section static String id; //Instance Variables Section //Class Methods Section //Instance Methods Section }
  • 6. ‫למשתנה‬ ‫פניה‬ ‫וכל‬ ,‫מהמחלקה‬ ‫ייווצרו‬ ‫אובייקטים‬ ‫כמה‬ ‫משנה‬ ‫לא‬ ,‫יחיד‬ ‫משתנה‬ ‫עבור‬ ‫בזיכרון‬ ‫מקום‬ ‫והוקצה‬ ‫נוצר‬ ,‫זה‬ ‫באופן‬ .‫בזיכרון‬ ‫המקום‬ ‫לאותו‬ ‫ומכאן‬ ‫הרפרנס‬ ‫לאותו‬ ‫תתבצע‬ ‫אובייקט‬ ‫כל‬ ‫ע"י‬ ‫זה‬‫סטטיים‬ ‫משתנה/מתודה‬ ‫של‬ ‫והיצירה‬ ‫ההקצאה‬ ‫יצירת‬ ‫לפני‬ ‫עוד‬ ,‫המחלקה‬ ‫של‬ ‫הטעינה‬ ‫בזמן‬ ‫כבר‬ ‫נעשות‬‫מאותחלים‬ ‫וערכיהם‬ ‫אובייקטים‬:‫דרכים‬ ‫משלוש‬ ‫באחת‬ ‫ה‬‫ראשונה‬‫ידני‬ ‫באופן‬ ,-‫מפורש‬,.‫ההצהרה‬ ‫בעת‬ ‫השמה‬ ‫תוך‬ class ClassName { //Class Variables Section static int num=5; //Instance Variables Section //Class Methods Section //Instance Methods Section } ‫השנייה‬,‫בלוק‬ ‫דרך‬‫סטטיים‬ ‫למשתנים‬ ‫אתחול‬.:‫הבאה‬ ‫בצורה‬ ‫שנכתב‬ ‫סטטי‬ ‫בלוק‬ ‫זהו‬ class ClassName { //Class Variables Section static int num; //Instance Variables Section //Class Methods Section //Instance Methods Section Static {//‫סטטי‬ ‫בבלוק‬ ‫שימוש‬ ‫בה‬ ‫שיעשה‬ ‫ע"מ‬ ‫סטטית‬ ‫להיות‬ ‫חייבת‬ ‫פנימית‬ ‫מחלקה‬ .‫המחלקה‬ ‫בקובץ‬ ‫מקום‬ ‫בכל‬ ‫להופיע‬ ‫יכול‬ ‫סטטי‬ ‫בלוק‬ num=10; } } ‫השלישית‬.‫נוצרו‬ ‫ממנו‬ ‫הטיפוס‬ ‫של‬ ‫המחדל‬ ‫ברירת‬ ‫לערכי‬ ‫המשתנים‬ ‫יאותחלו‬ ,‫מפורש‬ ‫אתחול‬ ‫בהיעדר‬ , class ClassName { //Class Variables Section static int num; // ‫ל‬ ‫הזה‬ ‫ובמקרה‬ ‫לטיפוס‬ ‫בהתאם‬ ‫המחדל‬ ‫ברירת‬ ‫לערך‬ ‫יאותחל‬ ,‫סטטי‬ ‫בבלוק‬ ‫אתחול‬ ‫ואין‬ ‫במידה‬-0 //Instance Variables Section //Class Methods Section //Instance Methods Section } ‫להופיע‬ ‫(יכולים‬ ‫האתחול‬ ‫בלוקי‬ ‫גם‬ ,‫סטטיים‬ ‫משתנים/מתודות‬ ‫של‬ ‫היצירה‬ ‫בסדר‬ ‫לקדימות‬ ‫בדומה‬‫יצירת‬ ‫טרם‬ ‫יבוצעו‬ ,)‫כמה‬ ‫לזיכרון‬ ‫המחלקה‬ ‫של‬ ‫הטעינה‬ ‫בזמן‬ ,‫האובייקטים‬‫האחרון‬ ‫הערך‬ ,‫שונים‬ ‫אתחול‬ ‫בבלוקי‬ ‫בכמה‬ ‫אותחל‬ ‫משתנה‬ ‫אותו‬ ‫אם‬ , ‫בו‬ ‫שיישאר‬ ‫זה‬ ‫הוא‬ ,‫שקיבל‬. :‫דרכים‬ ‫משתי‬ ‫באחת‬ ‫תיעשה‬ ‫מחלקה‬ ‫למשתנה‬ ‫פנייה‬ ‫בשם‬ ‫סטטי‬ ‫משתנה‬ ‫והוגדר‬ ‫(בהנחה‬countX‫במחלקה‬ClassName‫אובייק‬ ‫ונוצר‬‫בשם‬ ‫מהמחלקה‬ ‫ט‬objectName) ,‫הראשונה‬‫דרך‬ ‫פניה‬‫כל‬‫מהמחלקה‬ ‫אובייקט‬‫כזה‬ ‫נוצר‬ ‫באם‬ ,: objectName.countX=10; ‫תוך‬ ,‫השנייה‬‫למחלקה‬ ‫ישירה‬ ‫פנייה‬‫ו‬‫מסוים‬ ‫אובייקט‬ ‫דרך‬ ‫לא‬: ClassName.countX=10;
  • 7. ‫משתנים‬‫סטטיים‬‫סופיים‬–Final Static Variables ‫השמורה‬ ‫המילה‬ ‫את‬ ‫להוסיף‬ ‫נוכל‬ ,‫לקבוע‬ ‫סטטי‬ ‫משתנה‬ ‫להפוך‬ ‫נרצה‬ ‫אם‬final:‫הבא‬ ‫באופן‬ final static int CONSTVAR=5; .‫למחלקה‬ ‫קבוע‬ ‫יש‬ ,‫הרגע‬ ‫ומאותו‬ ‫ההצהרה‬ ‫בשורת‬ ‫אתחול‬ ,‫כלומר‬ .‫זה‬ ‫בנושא‬ ‫הקונבנציה‬ ‫זו‬ ,‫גדולות‬ ‫באותיות‬ ‫ייכתבו‬ ‫קבועים‬ ‫של‬ ‫שמות‬ :‫נזכור‬ ‫אובייקט‬ ‫כל‬ ‫עבור‬ ‫מחדש‬ ‫פעם‬ ‫כל‬ ‫יווצר‬ ‫הוא‬ ‫אחרת‬ ,)‫לאובייקט‬ ‫מאובייקט‬ ‫משתנה‬ ‫ערכו‬ ‫כן‬ ‫אם‬ ‫(אלא‬ ‫כסטטי‬ ‫קבוע‬ ‫להגדיר‬ ‫רצוי‬ !‫זיכרון‬ ‫משאבי‬ ‫מבחינת‬ ‫בזבזני‬ ‫וזה‬
  • 8. ‫מחלקות‬-‫המשך‬ ‫מוגדרות‬ ‫ופעולות‬ ‫תכונות‬ ‫אילו‬ ‫לומר‬ ‫יכולים‬ ‫אנו‬ ,‫מסוים‬ ‫אובייקט‬ ‫על‬ ‫בהביטנו‬ ,‫כן‬ ‫אם‬‫בבואנו‬ ,‫כן‬ ‫ועל‬ ‫נוצר‬ ‫הוא‬ ‫ממנה‬ ‫במחלקה‬ ,‫מכן‬ ‫לאחר‬ .‫שלנו‬ ‫בתכנית‬ ‫תפקיד‬ ‫לשחק‬ ‫שהולכים‬ ‫האובייקטים‬ ‫את‬ ‫בראשית‬ ‫לדמיין‬ ‫שננסה‬ ‫רצוי‬ ,‫תכנית‬ ‫של‬ ‫קוד‬ ‫קטע‬ ‫לכתוב‬ ‫עלינו‬ ‫יש‬ ‫מחלקות‬ ‫אילו‬ ‫של‬ ‫הבנה‬ ‫לקבל‬ ,‫כך‬ ‫ומתוך‬ ‫עליהם‬ ‫להפעיל‬ ‫שניתן‬ ‫הפעולות‬ ‫ומהן‬ ‫תכונותיהם‬ ‫יהיו‬ ‫מה‬ ‫ולהבין‬ ‫לנסות‬ .‫להגדיר‬ ‫לתכונות‬ ‫בנוסף‬(data members)‫ופעולות‬(function members)‫שלנו‬ ‫בתכנית‬ ‫אובייקטים‬ ‫בין‬ ‫יהיו‬ ‫קשרים‬ ‫אילו‬ ‫לדמיין‬ ‫נרצה‬ ,, ,‫כן‬ ‫כמו‬‫אובייקטים‬ ‫אולי‬ ‫מכילים‬ ‫אובייקטים‬ ‫אילו‬‫מהיותם‬ ‫כחלק‬ ‫אחרים‬‫הקשרים‬ ‫אותם‬ ‫הם‬ ‫אלו‬ ‫קשרים‬ ...‫שלם‬ ‫אובייקט‬ ‫האובייקט‬ ‫לבין‬ ‫המחלקה‬ ‫הגדרת‬ ‫בין‬ ‫ליניארי‬ ‫יחס‬ ‫יש‬ ,‫כלומר‬ ,‫עצמן‬ ‫המחלקות‬ ‫בין‬ ‫הקיימים‬‫שייווצר‬.‫ממנה‬ ‫כל‬‫ממחלקה‬ ‫נוצר‬ ‫אובייקט‬‫מ‬ ‫כתוצאה‬‫ביצוע‬instantiation‫מ‬‫ה‬ ‫אותה‬‫מחלקה‬‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫ע"י‬new‫המחלקה‬ ‫ושם‬ ‫הבא‬ ‫באופן‬‫ו‬ ‫(מחרוזות‬‫גם‬ ‫ליצור‬ ‫ניתן‬ ‫מערכים‬‫ישירה‬ ‫השמה‬ ‫ע"י‬): new ClassName(); ‫ה‬ ‫בתהליך‬-instantiation‫האופרטור‬ ‫מקצה‬new‫בבנאי‬ ‫כך‬ ‫הוגדר‬ ‫באם‬ ‫אותו‬ ‫מאתחל‬ ,‫החדש‬ ‫האובייקט‬ ‫עבור‬ ‫זיכרון‬‫המחלקה‬ ‫אליו‬ ‫שישלחו‬ ‫לפרמטרים‬ ‫ובהתאם‬‫ולסיום‬‫מ‬‫חזיר‬reference‫לאובייקט‬‫במשתנה‬ ‫שיוכל‬ ‫הערך‬ ‫וזהו‬. ‫לנו‬ ‫אין‬‫אפילו‬ ‫או‬ ‫שליטה‬‫גישה‬‫אחרות‬ ‫לשפות‬ ‫בניגוד‬ ,‫בזיכרון‬ ‫הפיזיות‬ ‫הכתובות‬ ‫למרחב‬‫את‬ ‫מהווה‬ ‫אינו‬ ‫שהמשתנה‬ ‫ומכאן‬ ‫אליו‬ ‫רפרנס‬ ‫אלא‬ ,‫עצמו‬ ‫האובייקט‬.‫ב‬ ‫שימוש‬ ‫שנבצע‬ ‫שבמקרה‬ ‫כמובן‬-new‫אז‬ ,)‫(הרפרנס‬ ‫החזרה‬ ‫ערך‬ ‫את‬ ‫לשמור‬ ‫מבלי‬ ‫ה‬ ‫ע"י‬ ‫ישוחרר‬ ,‫כך‬ ‫ובשל‬ ‫גישה‬ ‫חסר‬ ‫יהיה‬ ‫שנוצר‬ ‫האובייקט‬-garbage collector.‫שימוש‬ ‫מכלל‬ ‫שיצא‬ ‫למשאב‬ ‫כיאה‬ this ‫קורה‬ ‫זה‬ .‫הנוכחי‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫על‬ ‫לדבר‬ ‫לעתים‬ ‫צורך‬ ‫לנו‬ ‫יש‬ ,‫המחלקה‬ ‫של‬ ‫ההגדרה‬ ‫בתחום‬ ‫נמצאים‬ ‫אנו‬ ‫כאשר‬ ‫כלשהי‬ ‫למתודה‬ ‫הנוכחי‬ ‫לאובייקט‬ ‫הרפרנס‬ ‫את‬ ‫לשלוח‬ ‫מעוניינים‬ ‫אנו‬ ‫כאשר‬‫אחרת‬ ‫מתודה‬ ‫של‬ ‫פעולתה‬ ‫מתוך‬‫אנו‬ ‫כאשר‬ ‫או‬ , ‫נמצאים‬.‫המופע‬ ‫של‬ ‫משתנה‬ ‫ושם‬ ‫המתודה‬ ‫של‬ ‫מקומי‬ ‫משתנה‬ ‫שם‬ ‫בין‬ ‫שמות‬ ‫כפילות‬ ‫ונוצרת‬ ‫מתודה‬ ‫של‬ ‫הגדרתה‬ ‫בתחום‬ ‫השמורה‬ ‫המילה‬ ‫באמצעות‬ ‫הנוכחי‬ ‫לאובייקט‬ ‫הרפרנס‬ ‫את‬ ‫נציין‬ ‫אנו‬ ,‫הללו‬ ‫המקרים‬ ‫בשני‬this‫נשלח‬ ‫פשוט‬ ,‫הראשון‬ ‫במקרה‬ . ‫את‬this‫הנוכחי‬ ‫לאובייקט‬ ‫כרפרנס‬‫את‬ ‫נציין‬ ‫השני‬ ‫ובמקרה‬this‫לפני‬‫ביניהם‬ ‫מפרידה‬ ‫נקודה‬ ‫כאשר‬ ‫המשתנה‬ ‫שם‬ ‫אליו‬ ‫פונים‬ ‫שאנו‬ ‫זה‬ ‫הוא‬ ‫מהמשתנים‬ ‫מי‬ ‫לגבי‬ ‫כאינדיקציה‬‫כ‬ ,‫לומר‬:this.varName‫בעוד‬ ,‫המופע‬ ‫במשתנה‬ ‫שמדובר‬ ‫יציין‬ varName.‫המקומי‬ ‫במשתנה‬ ‫שמדובר‬ ‫יציין‬ public class ClassName { int test; public void setTest (int test) { this.test=test; } }
  • 9. ‫מחלק‬‫ות‬‫אבסטרקטי‬‫ו‬‫ת‬–Abstract Classes .‫מופע‬ ‫ממנה‬ ‫לייצר‬ ‫ניתן‬ ‫שלא‬ ‫מחלקה‬ ‫היא‬ ,‫אבסטרקטית‬ ‫מחלקה‬ ,‫לממשק‬ ‫בדומה‬ ‫להופיע‬ ‫יכולים‬ ‫אבסטרקטית‬ ‫במחלקה‬ ,‫מממשק‬ ‫בשונה‬‫מימושים‬‫מפורשים‬.‫כאבסטרקטיות‬ ‫הוגדרו‬ ‫שאינן‬ ‫מתודות‬ ‫של‬ ‫קווים‬ ‫רק‬ ‫מהווה‬ ‫לא‬ ‫זה‬ ‫מסוג‬ ‫ששבלונה‬ ‫רק‬ ,‫שבלונות‬ ‫ליצירת‬ ‫שבלונה‬ ‫מעיין‬ ,‫שוב‬ ,‫כללית‬ ‫תבנית‬ ‫להגדיר‬ ‫ניתן‬ ,‫זה‬ ‫באופן‬ ‫כלליים‬‫והצהרות‬‫ה‬ ‫במחלקות‬ ‫להיות‬ ‫שצריכים‬ ‫והמשתנים‬ ‫המתודות‬ ‫עבור‬‫מממשו‬‫ת‬‫של‬ ‫במקרה‬ ‫שנעשה‬ ‫(כפי‬‫ה‬)‫ממשק‬‫אלא‬ , ,‫שכאן‬‫הגדרת‬ ‫אופן‬ ‫את‬ ‫גם‬ ‫מהווה‬ ‫היא‬ ,‫מהמתודות‬ ‫חלק‬ ‫עבור‬‫ן‬-‫מימושן‬‫היורשות‬ ‫במחלקות‬. ‫לא‬ ,‫(כלומר‬ ‫ממנה‬ ‫ירושה‬ ‫באמצעות‬ ‫ייעשה‬ ‫אבסטרקטית‬ ‫במחלקה‬ ‫השימוש‬ ,‫בממשק‬ ‫ולא‬ ‫במחלקה‬ ‫מדובר‬ ‫זאת‬ ‫ובכל‬ ‫היות‬ ‫ממחלקות‬ ‫לרשת‬ ‫ניתן‬‫נוספות‬‫לממש‬ ‫חובה‬ ‫חלה‬ ,‫מופע‬ ‫ממנה‬ ‫לייצר‬ ‫שרוצים‬ ‫מחלקה‬ ‫זו‬ ‫אם‬ ,‫היורשת‬ ‫ובמחלקה‬ ,)‫במקביל‬- ‫לדרוס‬‫ש‬ ‫המתודות‬ ‫כל‬ ‫את‬‫מהמחל‬ ‫הגיעו‬‫ו‬ ‫המורישה‬ ‫האבסטרקטית‬ ‫קה‬‫הו‬‫צהרו‬‫בה‬‫כ‬‫מתודות‬‫אבסטר‬‫המחלקה‬ ,‫אחרת‬ ,‫קטיות‬ ‫היורשת‬‫מוגדרת‬ ‫להיות‬ ‫חייבת‬‫כאבסטרקטית‬.‫היא‬ ‫גם‬ :‫כך‬ ‫תיראה‬ ‫אבסטרקטית‬ ‫מחלקה‬ ‫של‬ ‫הגדרתה‬ ‫שורת‬ public abstract class AbstractClass { public abstract void abstractMethod(); // ‫מתודה‬ ,‫ובתוכה‬:‫כך‬ ‫תיראה‬ ‫אבסטרקטית‬ } ‫אבסטרקטיות‬ ‫מתודות‬ ‫בה‬ ‫אין‬ ,‫כלומר‬ .‫מלא‬ ‫באופן‬ ‫ממומשות‬ ‫בה‬ ‫המתודות‬ ‫שכל‬ ‫כזו‬ ‫להיות‬ ‫גם‬ ‫יכולה‬ ‫אבסטרקטית‬ ‫מחלקה‬ ‫לייצר‬ ‫ניתן‬ ‫אך‬ ,‫המחלקה‬ ‫של‬ ‫מופע‬ ‫לייצר‬ ‫ניתן‬ ‫שלא‬ ‫בכך‬ ‫תהיה‬ ‫כאן‬ ‫והמגבלה‬ ‫כלל‬‫ממחלקה‬ ‫שתירש‬ ,‫ריקה‬ ‫אפילו‬ ,‫מחלקה‬ ‫נ‬ ‫כבר‬ ‫שלה‬ ‫ומופע‬ ‫זו‬ ‫אבסטרקטית‬.‫לייצר‬ ‫יהיה‬ ‫יתן‬ ‫סופיות‬ ‫מחלקות‬–Final Classes ‫ולממש‬ ‫אחרת‬ ‫ממחלקה‬ ‫לרשת‬ ‫תוכל‬ ‫זו‬ ‫מחלקה‬ .‫הגדרתה‬ ‫את‬ ‫ולהרחיב‬ ‫ממנה‬ ‫לרשת‬ ‫ניתן‬ ‫יהיה‬ ‫שלא‬ ‫כך‬ ‫מחלקה‬ ‫להגדיר‬ ‫ניתן‬ ."‫הירושה‬ ‫שושלת‬ ‫"סוף‬ ‫תהיה‬ ‫היא‬ ‫אך‬ ,‫ממשק‬ :‫הבא‬ ‫באופן‬ ‫הגדרה‬ ‫לבצע‬ ‫יש‬ ‫לסופית‬ ‫מחלקה‬ ‫להפוך‬ ‫ע"מ‬ public final class ClassName { } ‫מראש‬ ‫מוגדרות‬ ‫מחלקות‬–defined Classes-Pre ‫שהוא‬ ‫משמעותו‬ ,‫שכזו‬ ‫מחלקה‬ ‫מסוג‬ ‫שמשתנה‬ ‫כך‬ ,‫כמחלקות‬ ‫בג'אווה‬ ‫עבורנו‬ ‫הוגדרו‬ ‫כבר‬ ,‫ושימושיים‬ ‫מוכרים‬ ‫נתונים‬ ‫מבני‬ ,‫ערימה‬ :‫לדוגמה‬ ,‫מסוים‬ ‫במבנה‬ ‫אחרים‬ ‫באובייקטים‬ ‫להחזיק‬ ‫מיועד‬.'‫וכד‬ ‫מקושרת‬ ‫רשימה‬ ,‫וקטור‬ ‫ע"מ‬:‫מהחבילה‬ ‫כולם‬ ‫את‬ ‫או‬ ‫הרצוי‬ ‫המבנה‬ ‫את‬ ‫לייבא‬ ‫יש‬ ,‫ואחרים‬ ‫אלו‬ ‫במבנים‬ ‫להשתמש‬ import java.util.*; ‫מהמבנים‬ ‫אובייקטים‬ ‫ליצור‬ ‫יהיה‬ ‫ניתן‬ ,‫הייבוא‬ ‫לאחר‬,‫לדוגמה‬ ,‫הקיימים‬:‫הבא‬ ‫באופן‬ Stack s=new Stack(); Vector v=new Vector(); LinkedList ll=new LinkedList();