Mais conteúdo relacionado
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
- 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();