SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
‫מתודות‬-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.

Mais conteúdo relacionado

Mais procurados

Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018
Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018
Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018Amazon Web Services
 
AWSでEC2上にMTAを構築した話
AWSでEC2上にMTAを構築した話AWSでEC2上にMTAを構築した話
AWSでEC2上にMTAを構築した話康宏 緒方
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要Yutaro Tamai
 
AWS Certified Cloud Practitioner Course S7-S10
AWS Certified Cloud Practitioner Course S7-S10AWS Certified Cloud Practitioner Course S7-S10
AWS Certified Cloud Practitioner Course S7-S10Neal Davis
 
سلسلة تعلم البرمجة بلغة C / C++ - 1
سلسلة تعلم البرمجة بلغة C / C++  - 1سلسلة تعلم البرمجة بلغة C / C++  - 1
سلسلة تعلم البرمجة بلغة C / C++ - 1بندر المجلاد
 
Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...
Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...
Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...Amazon Web Services
 
Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...
Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...
Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...Edureka!
 
Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018
Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018
Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018Amazon Web Services
 
Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...
Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...
Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...Amazon Web Services
 
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介Amazon Web Services Japan
 
Jump-start your application migration to AWS with CloudEndure - STG305 - New ...
Jump-start your application migration to AWS with CloudEndure - STG305 - New ...Jump-start your application migration to AWS with CloudEndure - STG305 - New ...
Jump-start your application migration to AWS with CloudEndure - STG305 - New ...Amazon Web Services
 
Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018
Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018
Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018Amazon Web Services
 
Azure Site Recovery
Azure Site RecoveryAzure Site Recovery
Azure Site RecoveryLalit Rawat
 

Mais procurados (13)

Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018
Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018
Oracle to Amazon Aurora Migration, Step by Step (DAT435-R1) - AWS re:Invent 2018
 
AWSでEC2上にMTAを構築した話
AWSでEC2上にMTAを構築した話AWSでEC2上にMTAを構築した話
AWSでEC2上にMTAを構築した話
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要
 
AWS Certified Cloud Practitioner Course S7-S10
AWS Certified Cloud Practitioner Course S7-S10AWS Certified Cloud Practitioner Course S7-S10
AWS Certified Cloud Practitioner Course S7-S10
 
سلسلة تعلم البرمجة بلغة C / C++ - 1
سلسلة تعلم البرمجة بلغة C / C++  - 1سلسلة تعلم البرمجة بلغة C / C++  - 1
سلسلة تعلم البرمجة بلغة C / C++ - 1
 
Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...
Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...
Migrating Oracle to Aurora PostgreSQL Utilizing AWS Database Migration Servic...
 
Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...
Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...
Azure Active Directory | Microsoft Azure Tutorial for Beginners | Azure 70-53...
 
Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018
Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018
Backing Up Amazon EC2 with Amazon EBS Snapshots (CMP301-R1) - AWS re:Invent 2018
 
Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...
Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...
Accelerate Oracle to Aurora PostgreSQL Migration (GPSTEC313) - AWS re:Invent ...
 
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
 
Jump-start your application migration to AWS with CloudEndure - STG305 - New ...
Jump-start your application migration to AWS with CloudEndure - STG305 - New ...Jump-start your application migration to AWS with CloudEndure - STG305 - New ...
Jump-start your application migration to AWS with CloudEndure - STG305 - New ...
 
Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018
Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018
Deep Dive on MySQL Databases on Amazon RDS (DAT322) - AWS re:Invent 2018
 
Azure Site Recovery
Azure Site RecoveryAzure Site Recovery
Azure Site Recovery
 

Mais de מורן אלקובי

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

Mais de מורן אלקובי (20)

ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיות
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשה
 
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטהג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
ג'אווה - תכנות מונחה עצמים - משתנים מטיפוס מחלקה והמרת טיפוסים למעלה/למטה
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
 
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 מדריך לעבודה עם
 
עבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סיעבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סי
 
מצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשב
 
מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3
 
מצגת לוגיקה מלאה חלק 2 מתוך 3
מצגת לוגיקה מלאה חלק 2 מתוך 3מצגת לוגיקה מלאה חלק 2 מתוך 3
מצגת לוגיקה מלאה חלק 2 מתוך 3
 

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

  • 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.