SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Downloaden Sie, um offline zu lesen
‫מתודות‬-Methods
‫ובאותו‬ ‫מחלקה‬ ‫לאף‬ ‫שייכת‬ ‫לא‬ ‫מתודה‬ ‫בו‬ ‫מצב‬ ‫ייתכן‬ ‫לא‬ ,‫כלומר‬ ,‫בדיוק‬ ‫אחת‬ ‫למחלקה‬ ‫להשתייך‬ ‫חייבת‬ ‫בג'אווה‬ ‫מתודה‬ ‫כל‬
.‫אחת‬ ‫ממחלקה‬ ‫ליותר‬ ‫שייכת‬ ‫מתודה‬ ‫בו‬ ‫מצב‬ ‫ייתכן‬ ‫לא‬ ,‫האופן‬
,‫המתודה‬ ‫אותה‬‫ואין‬ ‫המחלקה‬ ‫של‬ ‫ההכרה‬ ‫מרחב‬ ‫בתוך‬ ‫והוגדרה‬ ‫הוצהרה‬ ‫שהיא‬ ‫בכך‬ ‫אליה‬ ‫משתייכת‬ ,‫למחלקה‬ ‫המשתייכת‬
.‫לה‬ ‫מחוצה‬ ‫והגדרה‬ ‫המחלקה‬ ‫בתוך‬ ‫המתודה‬ ‫על‬ ‫הצהרה‬ ‫לבצע‬ ‫אחרות‬ ‫בשפות‬ ‫כמו‬ ‫אפשרות‬
getters & setters
‫שיותר‬ ‫כמה‬ ‫להגדיר‬ ‫נעדיף‬ ‫אנו‬ ,‫שלנו‬ ‫המופע‬ ‫למשתני‬ ‫ישירה‬ ‫גישה‬ ‫מתבצעת‬ ‫בו‬ ‫מצב‬ ‫למנוע‬ ‫ע"מ‬‫כמשתנים‬ ‫שלנו‬ ‫מהמשתנים‬
‫גישה‬ ‫מציין‬ ‫בעלי‬private‫בהתאם‬ ‫וזאת‬ ‫ולצפייה‬ ‫לעדכון‬ ‫המשתנה‬ ‫של‬ ‫חשיפה‬ ‫לאפשר‬ ‫מעוניינים‬ ‫כן‬ ‫אנו‬ ,‫זאת‬ ‫עם‬ .
‫מתודות‬ .‫להגדרתנו‬get‫ו‬-set‫מה‬ ‫את‬ ‫רק‬ ‫רואה‬ ‫שהלקוח‬ ‫כזה‬ ‫באופן‬ ‫שלנו‬ ‫המופע‬ ‫למשתני‬ ‫ממוסכת‬ ‫גישה‬ ‫לנו‬ ‫מאפשרות‬
‫את‬ ‫רק‬ ‫ומשנה‬ ‫יראה‬ ‫שהוא‬ ‫רוצים‬ ‫שאנחנו‬‫לכתוב‬ ‫ניתן‬ ,‫לדוגמה‬ .‫אותו‬ ‫שישנה‬ ‫רוצים‬ ‫אנו‬ ‫בו‬ ‫ובאופן‬ ‫שישנה‬ ‫רוצים‬ ‫שאנחנו‬ ‫מה‬
‫מתודת‬set‫לקרות‬ ‫שעלולות‬ ‫שונות‬ ‫שגיאות‬ ‫למנוע‬ ‫ובכך‬ ,‫ההשמה‬ ‫בטרם‬ ‫הקלט‬ ‫נכונות‬ ‫ובדיקת‬ ‫קלט‬ ‫מסכת‬ ‫מכילה‬ ‫אשר‬
.‫למשתנה‬ ‫ישירה‬ ‫גישה‬ ‫מאפשרים‬ ‫היינו‬ ‫באם‬ ‫להתקיים‬ ‫היה‬ ‫יכול‬ ‫שלא‬ ‫דבר‬ ,‫הדרך‬ ‫במהלך‬
‫כללי‬ ‫הגדרה‬‫למתודות‬ ‫ת‬get‫ו‬-set:
public class GetnSet {
private varType varName;
public varType getVarName() {
return varName;
}
public void setVarName(varType varName) {
this.varName = varName;
}
}
:‫הנ"ל‬ ‫מהמתודות‬ ‫אחת‬ ‫לכל‬ ‫מעשית‬ ‫דוגמה‬ ‫נביא‬
get()–‫שלנו‬ ‫ובמחלקה‬ ‫נניח‬Car‫משתנה‬ ‫קיים‬ ,price‫לסוחר‬ ‫שעלתה‬ ‫כפי‬ ,‫נטו‬ ‫המכונית‬ ‫מחיר‬ ‫את‬ ‫מכיל‬ ‫זה‬ ‫משתנה‬ .
‫רווח‬ ‫אחוז‬ ‫הוספת‬ ‫ע"י‬ ‫צרכן‬ ‫מחיר‬ ‫לייצר‬ ‫ברצונו‬ ,‫בפועל‬ ‫למחיר‬ ‫ישירה‬ ‫גישה‬ ‫לספק‬ ‫מעוניין‬ ‫אינו‬ ,‫הסוחר‬ ‫אותו‬ ‫אך‬ ,‫המכוניות‬
‫ת‬ ‫כמה‬ ‫יידע‬ ‫שהלקוח‬ ‫כך‬ ,‫רישוי‬ ‫ואגרת‬ ‫ייבוא‬ ‫עלויות‬ ,‫מסוים‬.‫ההוצאות‬ ‫כל‬ ‫לאחר‬ ‫המכונית‬ ‫לו‬ ‫עלה‬
‫המשתנה‬ ‫את‬ ‫להגדיר‬ ‫נוכל‬ ,‫כאלו‬ ‫במקרים‬price‫גישה‬ ‫מציין‬ ‫עם‬ ‫במשתנה‬private‫הלוגיקה‬ ‫את‬ ‫ולהכניס‬ ,-‫לחישוב‬ ‫הנוסחה‬
‫מתודה‬ ‫לתוך‬ ‫הסופי‬ ‫המחיר‬public‫בשם‬getPrice()‫המניפולציות‬ ‫את‬ ‫עליו‬ ‫שתעשה‬ ‫לפני‬ ‫לא‬ ,‫המחיר‬ ‫את‬ ‫תחזיר‬ ‫זו‬ ‫מתודה‬ .
‫או‬ ‫עפ"י‬ ‫הדרושות‬.‫הסוחר‬ ‫תו‬
set(varType var)–‫איננו‬ .‫המכונית‬ ‫מחיר‬ ‫את‬ ‫להזין‬ ‫לסוחר‬ ‫לאפשר‬ ‫מעוניינים‬ ‫אנו‬ ‫בו‬ ‫מקרה‬ ‫וניקח‬ ,‫הדוגמה‬ ‫אותה‬ ‫עם‬ ‫נמשיך‬
‫זה‬ ‫מסוג‬ ‫וטעויות‬ ‫במתכוון‬ ‫שלא‬ ‫לקרות‬ ‫עלולה‬ ‫שגויה‬ ‫הזנה‬ ,‫לעתים‬ .‫למשתנה‬ ‫ישירה‬ ‫גישה‬ ,‫לו‬ ‫לא‬ ‫אפילו‬ ,‫לאפשר‬ ‫מעוניינים‬
‫כ‬ ‫גם‬ .‫שלמה‬ ‫תכנית‬ ‫להפיל‬ ‫עלולות‬‫למשתנה‬ ‫שהגישה‬ ‫נוודא‬ ‫אן‬price‫הינה‬private‫מתודה‬ ‫וניצור‬setPrice(int price)‫עם‬
‫הרשאת‬public,‫שליליים‬ ‫ערכים‬ ‫של‬ ‫הזנה‬ ‫נמנע‬ ,‫לדוגמה‬ .‫לסנן‬ ‫שברצוננו‬ ‫הטעויות‬ ‫כל‬ ‫למניעת‬ ‫הלוגיקה‬ ‫כל‬ ‫את‬ ‫נכניס‬ ‫בה‬ ,
‫וכו‬ ‫למחיר‬ ‫מקסימום‬ ‫רף‬ ‫נקבע‬'.
‫המתודות‬ ‫של‬ ‫למימוש‬ ‫דוגמה‬ ‫נראה‬set()‫ו‬-get():
public class Car {
private int price;
private int customerPrice;
private int customs;
private int tax;
private int registration;
public int getCustoms() {
return customs;
}
public void setCustoms(int customs) {
this.customs = customs;
}
public int getTax() {
return tax;
}
public void setTax(int tax) {
this.tax = tax;
}
public int getRegistration() {
return registration;
}
public void setRegistration(int registration) {
this.registration = registration;
}
private int getRealPrice() {
return price;
}
public void setPrice(int price) {
if (price<0)
System.out.println("Negative value not allowed!");
else if (price>100000)
System.out.println("Can't afford to buy at more than 100,000!");
else {
this.price = price;
setCustomerPrice(price);
}
}
private void setCustomerPrice(int price) {
customerPrice = price+getTax()+getCustoms()+getRegistration();
}
public int getPrice() {
if (getRealPrice()==0)
System.out.println("Price calculated without purchase price");
if (getRegistration()==0)
System.out.println("Price calculated without registration fees");
if (getTax()==0)
System.out.println("Price calculated without tax amount");
if (getCustoms()==0)
System.out.println("Price calculated without customs fees");
return customerPrice;
}
}
:‫הנ"ל‬ ‫הקוד‬ ‫מדוגמת‬ ‫המעניינות‬ ‫מהנקודות‬ ‫למעט‬ ‫נתייחס‬ ‫כעת‬
‫כ‬ ‫הוגדרו‬ ‫כולם‬ ‫המשתנים‬-private‫יש‬ ‫משתנה‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫לעדכן‬ ‫ע"מ‬ ,‫כזה‬ ‫באופן‬ ,‫כאמור‬ .‫אליהם‬ ‫ישירה‬ ‫גישה‬ ‫למנוע‬ ‫ע"מ‬
‫במתודת‬ ‫לעבור‬ ‫צורך‬set.‫צורך‬ ‫בכך‬ ‫יש‬ ‫אם‬ ,‫המוזנים‬ ‫הערכים‬ ‫לגבי‬ ‫חוקיות‬ ‫שהגדירה‬
‫המתודות‬ ‫הוגדרו‬ ,‫כן‬ ‫כמו‬setCustomerPrice,getRealPrice‫כ‬-private‫הצרכן‬ ‫מחיר‬ ‫של‬ ‫ידנית‬ ‫הזנה‬ ‫למנוע‬ ‫רצון‬ ‫מתוך‬
‫הוא‬ ,‫שהוזן‬ ‫מרגע‬ .‫המכונית‬ ‫של‬ ‫הבסיס‬ ‫מחיר‬ ‫לגבי‬ ‫מידע‬ ‫קבלת‬ ‫למנוע‬ ‫ורצון‬ ,)‫גורמים‬ '‫ממס‬ ‫(מורכב‬ ‫המכונית‬ ‫של‬‫לא‬ ‫כבר‬
.‫קיימות‬ ‫הן‬ ‫ולכן‬ ‫המחלקה‬ ‫הגדרת‬ ‫בתוך‬ ‫גם‬ ‫אלו‬ ‫במתודות‬ ‫שימוש‬ ‫לעשות‬ ‫נרצה‬ ‫אנו‬ ,‫זאת‬ ‫עם‬ ‫יחד‬ .‫עבורנו‬ ‫יותר‬ ‫רלוונטי‬
‫המתודה‬setPrice‫ל‬ ‫לקבוע‬ ‫שניתן‬ ‫הערכים‬ ‫טווח‬ ‫את‬ ‫מגבילה‬price-‫גישה‬ ‫מאפשרים‬ ‫היינו‬ ‫אם‬ ‫מתאפשר‬ ‫היה‬ ‫שלא‬ ‫דבר‬ ,
‫והמתודה‬ ,‫למשתנה‬ ‫ישירה‬getPrice‫את‬ ‫בכלל‬ ‫מחזירה‬‫המשתנה‬ ‫של‬ ‫ערכו‬customerPrice‫של‬ ‫ערכו‬ ‫את‬ ‫ולא‬price‫כפי‬
.‫לצפות‬ ‫אולי‬ ‫היה‬ ‫שניתן‬
‫היכולות‬ ‫כל‬ ‫את‬ ‫מאבדים‬ ‫בעצם‬ ‫אנו‬ ‫למשתנים‬ ‫ישירה‬ ‫שבגישה‬ ,‫הנקודה‬ ‫את‬ ‫לחדד‬ ‫ע"מ‬ ‫בכוונה‬ ‫כזה‬ ‫באופן‬ ‫זו‬ ‫דוגמה‬ ‫הראיתי‬
‫שלנו‬ ‫המשתנים‬ ‫בו‬ ‫ובאופן‬ ‫בנעשה‬ ‫שולטים‬ ‫אנו‬ ,‫מתודות‬ ‫דרך‬ ‫הגישה‬ ‫במתן‬ ,‫שלעיל‬ ‫שהוצגו‬.‫ומעודכנים‬ ‫מוצגים‬
‫לגשת‬ ‫יהיה‬ ‫ניתן‬ ‫שלא‬ ‫כך‬ ,‫מופע‬ ‫למשתני‬ ‫הגישה‬ ‫להסתרת‬ ‫מוחלט‬ ‫כמעט‬ ‫באופן‬ ‫שנשאף‬ ‫ע"מ‬ ‫מספיקות‬ ‫לעיל‬ ‫שהוצגו‬ ‫הסיבות‬
.‫המחלקה‬ ‫לגבולות‬ ‫מחוץ‬ ‫ישירה‬ ‫בצורה‬ ‫אליהם‬
:‫המחלקה‬ ‫הגדרת‬ ‫בתוך‬ ‫בהן‬ ‫שימוש‬ ‫תוך‬ ‫הפעם‬ ,‫שכאלו‬ ‫במתודות‬ ‫לשימוש‬ ‫מהותית‬ ‫סיבה‬ ‫נציג‬ ,‫כעת‬
‫על‬ ‫שמירה‬maintainability–‫קלה‬ ‫קוד‬ ‫תחזוקת‬
‫המשתנה‬ ‫על‬ ‫לדבר‬ ‫רצינו‬ ‫בו‬ ‫בקוד‬ ‫מקום‬ ‫ובכל‬ ‫קוד‬ ‫שורות‬ ‫אלפי‬ ‫על‬ ‫משתרעת‬ ‫שלנו‬ ‫שהתוכנית‬ ‫נניח‬number‫תוך‬ ‫זאת‬ ‫עשינו‬ ,
‫שהוגדרו‬ ‫למשתנים‬ ‫לפנות‬ ‫יכולים‬ ‫אנו‬ ,‫כך‬ ‫ובשל‬ ,‫שלנו‬ ‫המחלקה‬ ‫הגדרת‬ ‫בתוך‬ ‫נמצאים‬ ‫אנו‬ ‫(הרי‬ ‫המשתנה‬ ‫בשם‬ ‫ישירה‬ ‫קריאה‬
‫כ‬-private‫"מ‬.)‫עתה‬ ‫זה‬ ‫מגדירים‬ ‫שאנו‬ ‫המחלקה‬ ‫של‬ ‫ההכרה‬ ‫בטווח‬ ‫נמצאים‬ ‫שאנחנו‬ ‫עוד‬ ‫כל‬ "‫חשש‬ ‫בלי‬
‫שהמתודה‬ ‫גם‬ ‫נניח‬getNumber()‫המשתנה‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫מחזירה‬ ‫בסה"כ‬ ,number‫מה‬ ‫כל‬ ‫אם‬ ,‫ולכן‬ ,‫דבר‬ ‫שום‬ ‫למסך‬ ‫מבלי‬
‫לכתוב‬ ‫מיותר‬ ‫כמאמץ‬ ‫נראה‬ ,‫המשתנה‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫למשל‬ ‫להדפיס‬ ‫זה‬ ‫לעשות‬ ‫רוצים‬ ‫שאנחנו‬println(getNumber())‫במקום‬
‫לכתוב‬ ‫פשוט‬println(number).
‫יכולנו‬ ‫ושאכן‬ ‫טובה‬ ‫תשובה‬ ‫באמת‬ ‫שאין‬ ‫הראשוני‬ ‫האינסטינקט‬ ‫אומר‬ ,‫זה‬ ‫מסוג‬ ‫שאלה‬ ‫על‬ ‫לענות‬ ‫נדרשים‬ ‫אנו‬ ‫בהם‬ ‫במקרים‬
?...‫יותר‬ ‫הפשוטה‬ ‫המקוצרת‬ ‫בדרך‬ ‫לא‬ ‫למה‬ ‫אז‬ ,‫הדבר‬ ‫כך‬ ‫ואם‬ ‫שקול‬ ‫באופן‬ ‫הצורות‬ ‫בשתי‬ ‫להשתמש‬
‫ע‬ ‫לדבר‬ ‫הזמן‬ ‫בדיוק‬ ‫כאן‬:"‫קוד‬ ‫"תחזוקת‬ ‫שנקרא‬ ‫הנושא‬ ‫ל‬
‫זאת‬ ‫שעשינו‬ ‫ונניח‬ ‫הקוד‬ ‫רצף‬ ‫בתוך‬ ‫ישירות‬ ‫המשתמש‬ ‫בשם‬ ‫השתמשנו‬ ‫שאכן‬ ‫נניח‬055‫לנו‬ ‫והתגלה‬ ‫נניח‬ ,‫כן‬ ‫כמו‬ .‫פעמים‬
‫של‬ ‫ערכו‬ ‫את‬ ‫להדפיס‬ ‫פונים‬ ‫שאנו‬ ‫פעם‬ ‫בכל‬ ‫צריכים‬ ‫שאנחנו‬number+ ‫ערכו‬ ‫את‬ ‫להדפיס‬ ,1.
,‫התכנית‬ ‫את‬ ‫להדר‬ ‫שנוכל‬ ‫ע"מ‬ ,‫שתיארתי‬ ‫להנחות‬ ‫בהתאם‬‫כתבנו‬ ‫בו‬ ‫מקום‬ ‫לכל‬ ‫לגשת‬ ‫צורך‬ ‫יש‬number‫ל‬ ‫ולשנות‬-number
+1.
‫מתודת‬ ‫אותה‬ ‫דרך‬ ‫ורק‬ ‫אך‬ ‫למשתנה‬ ‫לפנות‬ ‫יהיה‬ ,‫זו‬ ‫לבעיה‬ "‫"מיינטיינאבילי‬ ‫פתרון‬getNumber()‫ב‬ ‫שיופיע‬ ‫שבמקום‬ ‫כך‬ ,-055
‫המשתנה‬ ‫שם‬ ‫מקומות‬number,‫ב‬ ‫תופיע‬-055‫למתודה‬ ‫הקריאה‬ ‫מקומות‬getNumber()‫של‬ ‫ערכו‬ ‫את‬ ‫שמחזירה‬‫המשתנה‬
number‫של‬ ‫הלוגיקה‬ ‫בתוך‬ ‫אותו‬ ‫לבצע‬ ‫נוכל‬ ,‫הנ"ל‬ ‫השינוי‬ ‫של‬ ‫במקרה‬ ‫שגם‬ ‫כך‬ ,getNumber()‫שתחזיר‬ ‫כך‬ ,‫בדיוק‬ ‫אחת‬ ‫פעם‬
number +1‫במקום‬number.‫התכנית‬ ‫בשאר‬ ‫דבר‬ ‫לשנות‬ ‫מבלי‬
‫מחלקה‬ ‫מתודות‬–‫סטטיות‬ ‫מתודות‬–Static Methods
‫השמורה‬ ‫המילה‬ ‫תתווסף‬ ‫ההגדרה‬ ‫לשורת‬ ,‫המשתנה‬ ‫להגדרת‬ ‫בדומה‬ ‫תיעשה‬ ‫סטטית‬ ‫מתודה‬ ‫הגדרת‬static‫ערך‬ ‫לפני‬
:‫הבא‬ ‫באופן‬ .‫הגישה‬ ‫מציין‬ ‫ואחרי‬ ‫המתודה‬ ‫של‬ ‫החזרה‬
public static void staticMethod() {
}
‫המח‬ ‫לשם‬ ‫ישירה‬ ‫פניה‬ ‫ע"י‬ ‫או‬ ‫קיים‬ ‫אובייקט‬ ‫ע"י‬ ,‫המתודה‬ ‫את‬ ‫להפעיל‬ ‫ניתן‬ ,‫כאן‬ ‫גם‬‫אובייקטים‬ ‫כלל‬ ‫נוצרו‬ ‫לא‬ ‫אם‬ ‫גם‬ ,‫לקה‬
:‫מהמחלקה‬
car1.staticMethod(); //Method call via an instance
Car.staticMethod(); //Method call via Class name
‫המתודה‬ ‫את‬ ‫כדוגמה‬ ‫לראות‬ ‫ניתן‬main‫מאותה‬ ‫אובייקט‬ ‫יצרנו‬ ‫לא‬ ‫אם‬ ‫גם‬ ‫כאפליקציה‬ ‫המחלקה‬ ‫את‬ ‫להריץ‬ ‫ניתן‬ .‫תכנית‬ ‫בכל‬
‫של‬ ‫להיותה‬ ‫הודות‬ ‫לנו‬ ‫מתאפשר‬ ‫זה‬ .‫המחלקה‬main!‫סטטית‬
‫המתודה‬ ‫מוגדרת‬ ‫בה‬ ‫במחלקה‬ ‫מופע‬ ‫משתנה‬ ‫על‬ ‫נצהיר‬ ‫אם‬ ,‫לעיל‬ ‫שצוינו‬ ‫הסיבות‬ ‫מאותן‬main‫אפשרות‬ ‫לנו‬ ‫שאין‬ ‫נבחין‬ ,
‫זאת‬ ,‫הסטטית‬ ‫המתודה‬ ‫דרך‬ ‫אליו‬ ‫לגשת‬.‫האובייקט‬ ‫שנוצר‬ ‫לפני‬ ‫עוד‬ ‫קיימת‬ ‫הזו‬ ‫והמתודה‬ ‫היות‬
‫על‬ ‫לדבר‬ ‫ניתן‬ ‫לא‬ ‫גם‬ ‫האופן‬ ‫באותו‬this‫קיימת‬ ‫הסטטית‬ ‫שהמתודה‬ ‫שאמרנו‬ ‫והרי‬ ‫הנוכחי‬ ‫לאובייקט‬ ‫רפרנס‬ ‫מציין‬ ‫הוא‬ ‫שהרי‬ ,
.‫מסוים‬ ‫באובייקט‬ ‫תלות‬ ‫מבלי‬
.‫לדריסה‬ ‫ניתנות‬ ‫לא‬ ‫סטטיות‬ ‫מתודות‬
‫סופיות‬ ‫מתודות‬–Final Methods
‫א‬ ‫למנוע‬ ‫ניתן‬‫לעשות‬ ‫האפשרות‬ ‫ת‬Overriding‫הוספת‬ ‫ע"י‬ ‫למתודה‬final:‫להגדרתה‬
public final void FinalMethod() {
}
.‫יורשת‬ ‫במחלקה‬ ‫מחדש‬ ‫להגדרה‬ ‫ניתנם‬ ‫תהיה‬ ‫לא‬ ‫היא‬ ,‫זה‬ ‫באופן‬ ‫תוגדר‬ ‫שמתודה‬ ‫מרגע‬
‫היות‬ ,‫בביצועים‬ ‫ניכר‬ ‫שיפור‬ ‫גם‬ ‫יש‬ ,)‫המתודה‬ ‫פעולת‬ ‫אופי‬ ‫שינוי‬ ‫(מניעת‬ ‫הברור‬ ‫היתרון‬ ‫מלבד‬,‫כסופית‬ ‫מוגדרת‬ ‫שמתודה‬ ‫ובכך‬
.‫להשתמש‬ ‫יש‬ ‫מתודה‬ ‫של‬ ‫גרסה‬ ‫באיזו‬ ‫ריצה‬ ‫בזמן‬ ‫הבדיקה‬ ‫נחסכת‬
‫זמנן‬ ‫שעבר‬ ‫מתודות‬–Deprecated Methods
.‫למיושנות‬ ‫הפכו‬ ‫השפה‬ ‫של‬ ‫התחדשות‬ ‫שבעקבות‬ )‫מחלקות‬ ‫(או‬ ‫מתודות‬
‫לעשות‬ ‫ניתן‬ ‫הפקודה‬ ‫שורת‬ ‫דרך‬ ‫מהדרים‬ ‫אם‬ .‫אזהרה‬ ‫הודעת‬ ‫תינתן‬ ‫כאלה‬ ‫במתודות‬ ‫שימוש‬ ‫בעת‬‫של‬ ‫הוספה‬ ‫ע"י‬ ‫זאת‬
-deprecation‫הפקודה‬ ‫הרצת‬ ‫בעת‬javac.‫בנושא‬ ‫מידע‬ ‫ולקבל‬
‫באנוטציה‬ ‫להשתמש‬ ‫ניתן‬@Deprecated,‫זה‬ ‫מסימון‬ ‫כתוצאה‬ .‫ככאלו‬ ‫אותן‬ ‫לסמן‬ ‫וכך‬ ‫המתודה‬ ‫או‬ ‫המחלקה‬ ‫להגדרת‬ ‫בצמוד‬
‫ה‬ ‫מסמך‬ ‫גם‬-javadoc.‫בהתאם‬ ‫יעודכן‬
‫דריסה‬ ‫לבצע‬ ‫ננסה‬ ‫כאשר‬ ‫כאלו‬ ‫במקרים‬ ‫ניתקל‬ ‫אנו‬ ‫לרוב‬-Override‫כ‬ ‫שהוגדרה‬ ‫מתודה‬ ‫של‬-Deprecated.

Weitere ähnliche Inhalte

Was ist angesagt?

Magento 2 Design Patterns
Magento 2 Design PatternsMagento 2 Design Patterns
Magento 2 Design PatternsMax Pronko
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Philip Schwarz
 
How to develop automated tests
How to develop automated testsHow to develop automated tests
How to develop automated testsOdoo
 
BilgeAdam Nesne Yönelimli Programlama
BilgeAdam Nesne Yönelimli ProgramlamaBilgeAdam Nesne Yönelimli Programlama
BilgeAdam Nesne Yönelimli ProgramlamaSinan Bozkuş
 
Reflection in C Sharp
Reflection in C SharpReflection in C Sharp
Reflection in C SharpHarman Bajwa
 
所属しているグループをすべて取得する
所属しているグループをすべて取得する所属しているグループをすべて取得する
所属しているグループをすべて取得するMichio Koyama
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch APIXcat Liu
 
Visitor Pattern
Visitor PatternVisitor Pattern
Visitor PatternIder Zheng
 
Object-oriented programming
Object-oriented programmingObject-oriented programming
Object-oriented programmingNeelesh Shukla
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo pptivanvillar7
 
Forms in html5
Forms in html5Forms in html5
Forms in html5hrisi87
 
constructors in java ppt
constructors in java pptconstructors in java ppt
constructors in java pptkunal kishore
 
Type script - advanced usage and practices
Type script  - advanced usage and practicesType script  - advanced usage and practices
Type script - advanced usage and practicesIwan van der Kleijn
 
Error reporting in php
Error reporting in php Error reporting in php
Error reporting in php Mudasir Syed
 

Was ist angesagt? (20)

Magento 2 Design Patterns
Magento 2 Design PatternsMagento 2 Design Patterns
Magento 2 Design Patterns
 
Introduction to Grails
Introduction to GrailsIntroduction to Grails
Introduction to Grails
 
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala - Part ...
 
Php oop presentation
Php   oop presentationPhp   oop presentation
Php oop presentation
 
Proxy design pattern
Proxy design patternProxy design pattern
Proxy design pattern
 
How to develop automated tests
How to develop automated testsHow to develop automated tests
How to develop automated tests
 
Generics in java
Generics in javaGenerics in java
Generics in java
 
BilgeAdam Nesne Yönelimli Programlama
BilgeAdam Nesne Yönelimli ProgramlamaBilgeAdam Nesne Yönelimli Programlama
BilgeAdam Nesne Yönelimli Programlama
 
Reflection in C Sharp
Reflection in C SharpReflection in C Sharp
Reflection in C Sharp
 
所属しているグループをすべて取得する
所属しているグループをすべて取得する所属しているグループをすべて取得する
所属しているグループをすべて取得する
 
Builder pattern
Builder patternBuilder pattern
Builder pattern
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
 
Js: master prototypes
Js: master prototypesJs: master prototypes
Js: master prototypes
 
Visitor Pattern
Visitor PatternVisitor Pattern
Visitor Pattern
 
Object-oriented programming
Object-oriented programmingObject-oriented programming
Object-oriented programming
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Forms in html5
Forms in html5Forms in html5
Forms in html5
 
constructors in java ppt
constructors in java pptconstructors in java ppt
constructors in java ppt
 
Type script - advanced usage and practices
Type script  - advanced usage and practicesType script  - advanced usage and practices
Type script - advanced usage and practices
 
Error reporting in php
Error reporting in php Error reporting in php
Error reporting in php
 

Mehr von מורן אלקובי

ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהמורן אלקובי
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםמורן אלקובי
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםמורן אלקובי
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualמורן אלקובי
 
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותבדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותמורן אלקובי
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותמורן אלקובי
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותמורן אלקובי
 
כלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםכלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםמורן אלקובי
 
עבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סיעבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סימורן אלקובי
 
מצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמורן אלקובי
 

Mehr von מורן אלקובי (20)

Java - OOP - Exceptions Handling
Java - OOP - Exceptions HandlingJava - OOP - Exceptions Handling
Java - OOP - Exceptions Handling
 
ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיות
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשה
 
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
 
MySQL - מילון השאילתא
MySQL - מילון השאילתאMySQL - מילון השאילתא
MySQL - מילון השאילתא
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
 
SQL - מודל הנתונים
SQL - מודל הנתוניםSQL - מודל הנתונים
SQL - מודל הנתונים
 
SQL - אלגברה של יחסים
SQL - אלגברה של יחסיםSQL - אלגברה של יחסים
SQL - אלגברה של יחסים
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשרים
 
MySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתאMySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתא
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
 
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותבדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקות
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקות
 
טורי חזקה
טורי חזקהטורי חזקה
טורי חזקה
 
כלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםכלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטים
 
DLL מדריך לעבודה עם
DLL מדריך לעבודה עםDLL מדריך לעבודה עם
DLL מדריך לעבודה עם
 
עבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סיעבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סי
 
מצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשב
 

ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שעבר זמנן

  • 1.
  • 2. ‫מתודות‬-Methods ‫ובאותו‬ ‫מחלקה‬ ‫לאף‬ ‫שייכת‬ ‫לא‬ ‫מתודה‬ ‫בו‬ ‫מצב‬ ‫ייתכן‬ ‫לא‬ ,‫כלומר‬ ,‫בדיוק‬ ‫אחת‬ ‫למחלקה‬ ‫להשתייך‬ ‫חייבת‬ ‫בג'אווה‬ ‫מתודה‬ ‫כל‬ .‫אחת‬ ‫ממחלקה‬ ‫ליותר‬ ‫שייכת‬ ‫מתודה‬ ‫בו‬ ‫מצב‬ ‫ייתכן‬ ‫לא‬ ,‫האופן‬ ,‫המתודה‬ ‫אותה‬‫ואין‬ ‫המחלקה‬ ‫של‬ ‫ההכרה‬ ‫מרחב‬ ‫בתוך‬ ‫והוגדרה‬ ‫הוצהרה‬ ‫שהיא‬ ‫בכך‬ ‫אליה‬ ‫משתייכת‬ ,‫למחלקה‬ ‫המשתייכת‬ .‫לה‬ ‫מחוצה‬ ‫והגדרה‬ ‫המחלקה‬ ‫בתוך‬ ‫המתודה‬ ‫על‬ ‫הצהרה‬ ‫לבצע‬ ‫אחרות‬ ‫בשפות‬ ‫כמו‬ ‫אפשרות‬ getters & setters ‫שיותר‬ ‫כמה‬ ‫להגדיר‬ ‫נעדיף‬ ‫אנו‬ ,‫שלנו‬ ‫המופע‬ ‫למשתני‬ ‫ישירה‬ ‫גישה‬ ‫מתבצעת‬ ‫בו‬ ‫מצב‬ ‫למנוע‬ ‫ע"מ‬‫כמשתנים‬ ‫שלנו‬ ‫מהמשתנים‬ ‫גישה‬ ‫מציין‬ ‫בעלי‬private‫בהתאם‬ ‫וזאת‬ ‫ולצפייה‬ ‫לעדכון‬ ‫המשתנה‬ ‫של‬ ‫חשיפה‬ ‫לאפשר‬ ‫מעוניינים‬ ‫כן‬ ‫אנו‬ ,‫זאת‬ ‫עם‬ . ‫מתודות‬ .‫להגדרתנו‬get‫ו‬-set‫מה‬ ‫את‬ ‫רק‬ ‫רואה‬ ‫שהלקוח‬ ‫כזה‬ ‫באופן‬ ‫שלנו‬ ‫המופע‬ ‫למשתני‬ ‫ממוסכת‬ ‫גישה‬ ‫לנו‬ ‫מאפשרות‬ ‫את‬ ‫רק‬ ‫ומשנה‬ ‫יראה‬ ‫שהוא‬ ‫רוצים‬ ‫שאנחנו‬‫לכתוב‬ ‫ניתן‬ ,‫לדוגמה‬ .‫אותו‬ ‫שישנה‬ ‫רוצים‬ ‫אנו‬ ‫בו‬ ‫ובאופן‬ ‫שישנה‬ ‫רוצים‬ ‫שאנחנו‬ ‫מה‬ ‫מתודת‬set‫לקרות‬ ‫שעלולות‬ ‫שונות‬ ‫שגיאות‬ ‫למנוע‬ ‫ובכך‬ ,‫ההשמה‬ ‫בטרם‬ ‫הקלט‬ ‫נכונות‬ ‫ובדיקת‬ ‫קלט‬ ‫מסכת‬ ‫מכילה‬ ‫אשר‬ .‫למשתנה‬ ‫ישירה‬ ‫גישה‬ ‫מאפשרים‬ ‫היינו‬ ‫באם‬ ‫להתקיים‬ ‫היה‬ ‫יכול‬ ‫שלא‬ ‫דבר‬ ,‫הדרך‬ ‫במהלך‬ ‫כללי‬ ‫הגדרה‬‫למתודות‬ ‫ת‬get‫ו‬-set: public class GetnSet { private varType varName; public varType getVarName() { return varName; } public void setVarName(varType varName) { this.varName = varName; } } :‫הנ"ל‬ ‫מהמתודות‬ ‫אחת‬ ‫לכל‬ ‫מעשית‬ ‫דוגמה‬ ‫נביא‬ get()–‫שלנו‬ ‫ובמחלקה‬ ‫נניח‬Car‫משתנה‬ ‫קיים‬ ,price‫לסוחר‬ ‫שעלתה‬ ‫כפי‬ ,‫נטו‬ ‫המכונית‬ ‫מחיר‬ ‫את‬ ‫מכיל‬ ‫זה‬ ‫משתנה‬ . ‫רווח‬ ‫אחוז‬ ‫הוספת‬ ‫ע"י‬ ‫צרכן‬ ‫מחיר‬ ‫לייצר‬ ‫ברצונו‬ ,‫בפועל‬ ‫למחיר‬ ‫ישירה‬ ‫גישה‬ ‫לספק‬ ‫מעוניין‬ ‫אינו‬ ,‫הסוחר‬ ‫אותו‬ ‫אך‬ ,‫המכוניות‬ ‫ת‬ ‫כמה‬ ‫יידע‬ ‫שהלקוח‬ ‫כך‬ ,‫רישוי‬ ‫ואגרת‬ ‫ייבוא‬ ‫עלויות‬ ,‫מסוים‬.‫ההוצאות‬ ‫כל‬ ‫לאחר‬ ‫המכונית‬ ‫לו‬ ‫עלה‬ ‫המשתנה‬ ‫את‬ ‫להגדיר‬ ‫נוכל‬ ,‫כאלו‬ ‫במקרים‬price‫גישה‬ ‫מציין‬ ‫עם‬ ‫במשתנה‬private‫הלוגיקה‬ ‫את‬ ‫ולהכניס‬ ,-‫לחישוב‬ ‫הנוסחה‬ ‫מתודה‬ ‫לתוך‬ ‫הסופי‬ ‫המחיר‬public‫בשם‬getPrice()‫המניפולציות‬ ‫את‬ ‫עליו‬ ‫שתעשה‬ ‫לפני‬ ‫לא‬ ,‫המחיר‬ ‫את‬ ‫תחזיר‬ ‫זו‬ ‫מתודה‬ . ‫או‬ ‫עפ"י‬ ‫הדרושות‬.‫הסוחר‬ ‫תו‬ set(varType var)–‫איננו‬ .‫המכונית‬ ‫מחיר‬ ‫את‬ ‫להזין‬ ‫לסוחר‬ ‫לאפשר‬ ‫מעוניינים‬ ‫אנו‬ ‫בו‬ ‫מקרה‬ ‫וניקח‬ ,‫הדוגמה‬ ‫אותה‬ ‫עם‬ ‫נמשיך‬ ‫זה‬ ‫מסוג‬ ‫וטעויות‬ ‫במתכוון‬ ‫שלא‬ ‫לקרות‬ ‫עלולה‬ ‫שגויה‬ ‫הזנה‬ ,‫לעתים‬ .‫למשתנה‬ ‫ישירה‬ ‫גישה‬ ,‫לו‬ ‫לא‬ ‫אפילו‬ ,‫לאפשר‬ ‫מעוניינים‬ ‫כ‬ ‫גם‬ .‫שלמה‬ ‫תכנית‬ ‫להפיל‬ ‫עלולות‬‫למשתנה‬ ‫שהגישה‬ ‫נוודא‬ ‫אן‬price‫הינה‬private‫מתודה‬ ‫וניצור‬setPrice(int price)‫עם‬ ‫הרשאת‬public,‫שליליים‬ ‫ערכים‬ ‫של‬ ‫הזנה‬ ‫נמנע‬ ,‫לדוגמה‬ .‫לסנן‬ ‫שברצוננו‬ ‫הטעויות‬ ‫כל‬ ‫למניעת‬ ‫הלוגיקה‬ ‫כל‬ ‫את‬ ‫נכניס‬ ‫בה‬ , ‫וכו‬ ‫למחיר‬ ‫מקסימום‬ ‫רף‬ ‫נקבע‬'.
  • 3. ‫המתודות‬ ‫של‬ ‫למימוש‬ ‫דוגמה‬ ‫נראה‬set()‫ו‬-get(): public class Car { private int price; private int customerPrice; private int customs; private int tax; private int registration; public int getCustoms() { return customs; } public void setCustoms(int customs) { this.customs = customs; } public int getTax() { return tax; } public void setTax(int tax) { this.tax = tax; } public int getRegistration() { return registration; } public void setRegistration(int registration) { this.registration = registration; } private int getRealPrice() { return price; } public void setPrice(int price) { if (price<0) System.out.println("Negative value not allowed!"); else if (price>100000) System.out.println("Can't afford to buy at more than 100,000!"); else { this.price = price; setCustomerPrice(price); } } private void setCustomerPrice(int price) { customerPrice = price+getTax()+getCustoms()+getRegistration(); } public int getPrice() { if (getRealPrice()==0) System.out.println("Price calculated without purchase price"); if (getRegistration()==0) System.out.println("Price calculated without registration fees"); if (getTax()==0) System.out.println("Price calculated without tax amount"); if (getCustoms()==0) System.out.println("Price calculated without customs fees"); return customerPrice; } }
  • 4. :‫הנ"ל‬ ‫הקוד‬ ‫מדוגמת‬ ‫המעניינות‬ ‫מהנקודות‬ ‫למעט‬ ‫נתייחס‬ ‫כעת‬ ‫כ‬ ‫הוגדרו‬ ‫כולם‬ ‫המשתנים‬-private‫יש‬ ‫משתנה‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫לעדכן‬ ‫ע"מ‬ ,‫כזה‬ ‫באופן‬ ,‫כאמור‬ .‫אליהם‬ ‫ישירה‬ ‫גישה‬ ‫למנוע‬ ‫ע"מ‬ ‫במתודת‬ ‫לעבור‬ ‫צורך‬set.‫צורך‬ ‫בכך‬ ‫יש‬ ‫אם‬ ,‫המוזנים‬ ‫הערכים‬ ‫לגבי‬ ‫חוקיות‬ ‫שהגדירה‬ ‫המתודות‬ ‫הוגדרו‬ ,‫כן‬ ‫כמו‬setCustomerPrice,getRealPrice‫כ‬-private‫הצרכן‬ ‫מחיר‬ ‫של‬ ‫ידנית‬ ‫הזנה‬ ‫למנוע‬ ‫רצון‬ ‫מתוך‬ ‫הוא‬ ,‫שהוזן‬ ‫מרגע‬ .‫המכונית‬ ‫של‬ ‫הבסיס‬ ‫מחיר‬ ‫לגבי‬ ‫מידע‬ ‫קבלת‬ ‫למנוע‬ ‫ורצון‬ ,)‫גורמים‬ '‫ממס‬ ‫(מורכב‬ ‫המכונית‬ ‫של‬‫לא‬ ‫כבר‬ .‫קיימות‬ ‫הן‬ ‫ולכן‬ ‫המחלקה‬ ‫הגדרת‬ ‫בתוך‬ ‫גם‬ ‫אלו‬ ‫במתודות‬ ‫שימוש‬ ‫לעשות‬ ‫נרצה‬ ‫אנו‬ ,‫זאת‬ ‫עם‬ ‫יחד‬ .‫עבורנו‬ ‫יותר‬ ‫רלוונטי‬ ‫המתודה‬setPrice‫ל‬ ‫לקבוע‬ ‫שניתן‬ ‫הערכים‬ ‫טווח‬ ‫את‬ ‫מגבילה‬price-‫גישה‬ ‫מאפשרים‬ ‫היינו‬ ‫אם‬ ‫מתאפשר‬ ‫היה‬ ‫שלא‬ ‫דבר‬ , ‫והמתודה‬ ,‫למשתנה‬ ‫ישירה‬getPrice‫את‬ ‫בכלל‬ ‫מחזירה‬‫המשתנה‬ ‫של‬ ‫ערכו‬customerPrice‫של‬ ‫ערכו‬ ‫את‬ ‫ולא‬price‫כפי‬ .‫לצפות‬ ‫אולי‬ ‫היה‬ ‫שניתן‬ ‫היכולות‬ ‫כל‬ ‫את‬ ‫מאבדים‬ ‫בעצם‬ ‫אנו‬ ‫למשתנים‬ ‫ישירה‬ ‫שבגישה‬ ,‫הנקודה‬ ‫את‬ ‫לחדד‬ ‫ע"מ‬ ‫בכוונה‬ ‫כזה‬ ‫באופן‬ ‫זו‬ ‫דוגמה‬ ‫הראיתי‬ ‫שלנו‬ ‫המשתנים‬ ‫בו‬ ‫ובאופן‬ ‫בנעשה‬ ‫שולטים‬ ‫אנו‬ ,‫מתודות‬ ‫דרך‬ ‫הגישה‬ ‫במתן‬ ,‫שלעיל‬ ‫שהוצגו‬.‫ומעודכנים‬ ‫מוצגים‬ ‫לגשת‬ ‫יהיה‬ ‫ניתן‬ ‫שלא‬ ‫כך‬ ,‫מופע‬ ‫למשתני‬ ‫הגישה‬ ‫להסתרת‬ ‫מוחלט‬ ‫כמעט‬ ‫באופן‬ ‫שנשאף‬ ‫ע"מ‬ ‫מספיקות‬ ‫לעיל‬ ‫שהוצגו‬ ‫הסיבות‬ .‫המחלקה‬ ‫לגבולות‬ ‫מחוץ‬ ‫ישירה‬ ‫בצורה‬ ‫אליהם‬ :‫המחלקה‬ ‫הגדרת‬ ‫בתוך‬ ‫בהן‬ ‫שימוש‬ ‫תוך‬ ‫הפעם‬ ,‫שכאלו‬ ‫במתודות‬ ‫לשימוש‬ ‫מהותית‬ ‫סיבה‬ ‫נציג‬ ,‫כעת‬ ‫על‬ ‫שמירה‬maintainability–‫קלה‬ ‫קוד‬ ‫תחזוקת‬ ‫המשתנה‬ ‫על‬ ‫לדבר‬ ‫רצינו‬ ‫בו‬ ‫בקוד‬ ‫מקום‬ ‫ובכל‬ ‫קוד‬ ‫שורות‬ ‫אלפי‬ ‫על‬ ‫משתרעת‬ ‫שלנו‬ ‫שהתוכנית‬ ‫נניח‬number‫תוך‬ ‫זאת‬ ‫עשינו‬ , ‫שהוגדרו‬ ‫למשתנים‬ ‫לפנות‬ ‫יכולים‬ ‫אנו‬ ,‫כך‬ ‫ובשל‬ ,‫שלנו‬ ‫המחלקה‬ ‫הגדרת‬ ‫בתוך‬ ‫נמצאים‬ ‫אנו‬ ‫(הרי‬ ‫המשתנה‬ ‫בשם‬ ‫ישירה‬ ‫קריאה‬ ‫כ‬-private‫"מ‬.)‫עתה‬ ‫זה‬ ‫מגדירים‬ ‫שאנו‬ ‫המחלקה‬ ‫של‬ ‫ההכרה‬ ‫בטווח‬ ‫נמצאים‬ ‫שאנחנו‬ ‫עוד‬ ‫כל‬ "‫חשש‬ ‫בלי‬ ‫שהמתודה‬ ‫גם‬ ‫נניח‬getNumber()‫המשתנה‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫מחזירה‬ ‫בסה"כ‬ ,number‫מה‬ ‫כל‬ ‫אם‬ ,‫ולכן‬ ,‫דבר‬ ‫שום‬ ‫למסך‬ ‫מבלי‬ ‫לכתוב‬ ‫מיותר‬ ‫כמאמץ‬ ‫נראה‬ ,‫המשתנה‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫למשל‬ ‫להדפיס‬ ‫זה‬ ‫לעשות‬ ‫רוצים‬ ‫שאנחנו‬println(getNumber())‫במקום‬ ‫לכתוב‬ ‫פשוט‬println(number). ‫יכולנו‬ ‫ושאכן‬ ‫טובה‬ ‫תשובה‬ ‫באמת‬ ‫שאין‬ ‫הראשוני‬ ‫האינסטינקט‬ ‫אומר‬ ,‫זה‬ ‫מסוג‬ ‫שאלה‬ ‫על‬ ‫לענות‬ ‫נדרשים‬ ‫אנו‬ ‫בהם‬ ‫במקרים‬ ?...‫יותר‬ ‫הפשוטה‬ ‫המקוצרת‬ ‫בדרך‬ ‫לא‬ ‫למה‬ ‫אז‬ ,‫הדבר‬ ‫כך‬ ‫ואם‬ ‫שקול‬ ‫באופן‬ ‫הצורות‬ ‫בשתי‬ ‫להשתמש‬ ‫ע‬ ‫לדבר‬ ‫הזמן‬ ‫בדיוק‬ ‫כאן‬:"‫קוד‬ ‫"תחזוקת‬ ‫שנקרא‬ ‫הנושא‬ ‫ל‬ ‫זאת‬ ‫שעשינו‬ ‫ונניח‬ ‫הקוד‬ ‫רצף‬ ‫בתוך‬ ‫ישירות‬ ‫המשתמש‬ ‫בשם‬ ‫השתמשנו‬ ‫שאכן‬ ‫נניח‬055‫לנו‬ ‫והתגלה‬ ‫נניח‬ ,‫כן‬ ‫כמו‬ .‫פעמים‬ ‫של‬ ‫ערכו‬ ‫את‬ ‫להדפיס‬ ‫פונים‬ ‫שאנו‬ ‫פעם‬ ‫בכל‬ ‫צריכים‬ ‫שאנחנו‬number+ ‫ערכו‬ ‫את‬ ‫להדפיס‬ ,1. ,‫התכנית‬ ‫את‬ ‫להדר‬ ‫שנוכל‬ ‫ע"מ‬ ,‫שתיארתי‬ ‫להנחות‬ ‫בהתאם‬‫כתבנו‬ ‫בו‬ ‫מקום‬ ‫לכל‬ ‫לגשת‬ ‫צורך‬ ‫יש‬number‫ל‬ ‫ולשנות‬-number +1. ‫מתודת‬ ‫אותה‬ ‫דרך‬ ‫ורק‬ ‫אך‬ ‫למשתנה‬ ‫לפנות‬ ‫יהיה‬ ,‫זו‬ ‫לבעיה‬ "‫"מיינטיינאבילי‬ ‫פתרון‬getNumber()‫ב‬ ‫שיופיע‬ ‫שבמקום‬ ‫כך‬ ,-055 ‫המשתנה‬ ‫שם‬ ‫מקומות‬number,‫ב‬ ‫תופיע‬-055‫למתודה‬ ‫הקריאה‬ ‫מקומות‬getNumber()‫של‬ ‫ערכו‬ ‫את‬ ‫שמחזירה‬‫המשתנה‬ number‫של‬ ‫הלוגיקה‬ ‫בתוך‬ ‫אותו‬ ‫לבצע‬ ‫נוכל‬ ,‫הנ"ל‬ ‫השינוי‬ ‫של‬ ‫במקרה‬ ‫שגם‬ ‫כך‬ ,getNumber()‫שתחזיר‬ ‫כך‬ ,‫בדיוק‬ ‫אחת‬ ‫פעם‬ number +1‫במקום‬number.‫התכנית‬ ‫בשאר‬ ‫דבר‬ ‫לשנות‬ ‫מבלי‬
  • 5. ‫מחלקה‬ ‫מתודות‬–‫סטטיות‬ ‫מתודות‬–Static Methods ‫השמורה‬ ‫המילה‬ ‫תתווסף‬ ‫ההגדרה‬ ‫לשורת‬ ,‫המשתנה‬ ‫להגדרת‬ ‫בדומה‬ ‫תיעשה‬ ‫סטטית‬ ‫מתודה‬ ‫הגדרת‬static‫ערך‬ ‫לפני‬ :‫הבא‬ ‫באופן‬ .‫הגישה‬ ‫מציין‬ ‫ואחרי‬ ‫המתודה‬ ‫של‬ ‫החזרה‬ public static void staticMethod() { } ‫המח‬ ‫לשם‬ ‫ישירה‬ ‫פניה‬ ‫ע"י‬ ‫או‬ ‫קיים‬ ‫אובייקט‬ ‫ע"י‬ ,‫המתודה‬ ‫את‬ ‫להפעיל‬ ‫ניתן‬ ,‫כאן‬ ‫גם‬‫אובייקטים‬ ‫כלל‬ ‫נוצרו‬ ‫לא‬ ‫אם‬ ‫גם‬ ,‫לקה‬ :‫מהמחלקה‬ car1.staticMethod(); //Method call via an instance Car.staticMethod(); //Method call via Class name ‫המתודה‬ ‫את‬ ‫כדוגמה‬ ‫לראות‬ ‫ניתן‬main‫מאותה‬ ‫אובייקט‬ ‫יצרנו‬ ‫לא‬ ‫אם‬ ‫גם‬ ‫כאפליקציה‬ ‫המחלקה‬ ‫את‬ ‫להריץ‬ ‫ניתן‬ .‫תכנית‬ ‫בכל‬ ‫של‬ ‫להיותה‬ ‫הודות‬ ‫לנו‬ ‫מתאפשר‬ ‫זה‬ .‫המחלקה‬main!‫סטטית‬ ‫המתודה‬ ‫מוגדרת‬ ‫בה‬ ‫במחלקה‬ ‫מופע‬ ‫משתנה‬ ‫על‬ ‫נצהיר‬ ‫אם‬ ,‫לעיל‬ ‫שצוינו‬ ‫הסיבות‬ ‫מאותן‬main‫אפשרות‬ ‫לנו‬ ‫שאין‬ ‫נבחין‬ , ‫זאת‬ ,‫הסטטית‬ ‫המתודה‬ ‫דרך‬ ‫אליו‬ ‫לגשת‬.‫האובייקט‬ ‫שנוצר‬ ‫לפני‬ ‫עוד‬ ‫קיימת‬ ‫הזו‬ ‫והמתודה‬ ‫היות‬ ‫על‬ ‫לדבר‬ ‫ניתן‬ ‫לא‬ ‫גם‬ ‫האופן‬ ‫באותו‬this‫קיימת‬ ‫הסטטית‬ ‫שהמתודה‬ ‫שאמרנו‬ ‫והרי‬ ‫הנוכחי‬ ‫לאובייקט‬ ‫רפרנס‬ ‫מציין‬ ‫הוא‬ ‫שהרי‬ , .‫מסוים‬ ‫באובייקט‬ ‫תלות‬ ‫מבלי‬ .‫לדריסה‬ ‫ניתנות‬ ‫לא‬ ‫סטטיות‬ ‫מתודות‬ ‫סופיות‬ ‫מתודות‬–Final Methods ‫א‬ ‫למנוע‬ ‫ניתן‬‫לעשות‬ ‫האפשרות‬ ‫ת‬Overriding‫הוספת‬ ‫ע"י‬ ‫למתודה‬final:‫להגדרתה‬ public final void FinalMethod() { } .‫יורשת‬ ‫במחלקה‬ ‫מחדש‬ ‫להגדרה‬ ‫ניתנם‬ ‫תהיה‬ ‫לא‬ ‫היא‬ ,‫זה‬ ‫באופן‬ ‫תוגדר‬ ‫שמתודה‬ ‫מרגע‬ ‫היות‬ ,‫בביצועים‬ ‫ניכר‬ ‫שיפור‬ ‫גם‬ ‫יש‬ ,)‫המתודה‬ ‫פעולת‬ ‫אופי‬ ‫שינוי‬ ‫(מניעת‬ ‫הברור‬ ‫היתרון‬ ‫מלבד‬,‫כסופית‬ ‫מוגדרת‬ ‫שמתודה‬ ‫ובכך‬ .‫להשתמש‬ ‫יש‬ ‫מתודה‬ ‫של‬ ‫גרסה‬ ‫באיזו‬ ‫ריצה‬ ‫בזמן‬ ‫הבדיקה‬ ‫נחסכת‬ ‫זמנן‬ ‫שעבר‬ ‫מתודות‬–Deprecated Methods .‫למיושנות‬ ‫הפכו‬ ‫השפה‬ ‫של‬ ‫התחדשות‬ ‫שבעקבות‬ )‫מחלקות‬ ‫(או‬ ‫מתודות‬ ‫לעשות‬ ‫ניתן‬ ‫הפקודה‬ ‫שורת‬ ‫דרך‬ ‫מהדרים‬ ‫אם‬ .‫אזהרה‬ ‫הודעת‬ ‫תינתן‬ ‫כאלה‬ ‫במתודות‬ ‫שימוש‬ ‫בעת‬‫של‬ ‫הוספה‬ ‫ע"י‬ ‫זאת‬ -deprecation‫הפקודה‬ ‫הרצת‬ ‫בעת‬javac.‫בנושא‬ ‫מידע‬ ‫ולקבל‬ ‫באנוטציה‬ ‫להשתמש‬ ‫ניתן‬@Deprecated,‫זה‬ ‫מסימון‬ ‫כתוצאה‬ .‫ככאלו‬ ‫אותן‬ ‫לסמן‬ ‫וכך‬ ‫המתודה‬ ‫או‬ ‫המחלקה‬ ‫להגדרת‬ ‫בצמוד‬ ‫ה‬ ‫מסמך‬ ‫גם‬-javadoc.‫בהתאם‬ ‫יעודכן‬ ‫דריסה‬ ‫לבצע‬ ‫ננסה‬ ‫כאשר‬ ‫כאלו‬ ‫במקרים‬ ‫ניתקל‬ ‫אנו‬ ‫לרוב‬-Override‫כ‬ ‫שהוגדרה‬ ‫מתודה‬ ‫של‬-Deprecated.