שגרה (תכנות) – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Matanyabot (שיחה | תרומות)
מ בוט החלפות: פיבונאצ'י, מאחר ש
←‏סוגים של מתודות: תיקון שגיאות והסרת טענות תלויות-שפה
שורה 85:
 
==סוגים של מתודות==
* מתודה לא-וירטואלית - מתודה שקריאה אליה מתפרשת על פי הטיפוס הסטטי של האובייקט.
 
* מתודה וירטואלית - מתודה שמוגדרת באובייקט אב כמתודה וירטואלית. אובייקטים שיירשו ממחלקת האב יוכלו "לדרוס" (Override) את המתודה ממחלקת האב באופן אחר, וכך מתאפשר [[פולימורפיזם]] של זמן ריצה: התנהגות שונה של אובייקטים בעלי טיפוס סטטי זהה, על פי הטיפוס הדינמי שלהם.
* מתודה [[רקורסיה|רקורסיבית]] - מתודה שמפעילה את עצמה עד להגעה לתנאי עצירה מסוים. בעזרת מתודות רקורסיביות, ניתן לממש הגדרות רקורסיביות כגון עצרת, סדרת פיבונאצ'י או סדרות נסיגה. כדי לדעת למשל את ערך של !10 צריך לכפול את 10 ב-9, את התוצאה יש לכפול ב-8 וכן הלאה עד שכופלים ב-1. מתודה רקורסיבית שתממש עצרת תמשיך לקרוא לעצמה עד שהפרמטר (הכופל) של התוצאה הוא 1. כל מתודה שמפעילה לולאה על מנת להשיג תוצאה מסוימת, ניתן להמיר למתודה רקורסיבית ולהיפך.
* מתודה אבסטרקטית (או מתודה וירטואלית-טהורה) - מתודה שמוגרת באובייקטבמחלקת אב אבסטרקטיאבסטרקטית (לאשלא ניתן ליצור לולה מופע), והאובייקטיםוהמחלקות היורשיםהיורשות מממשיםצריכות בצורהלממש שונהאותה. להבדיל ממתודה וירטואלית, מתודה אבסטרקטית באובייקט האב אינהאיננה חייבת להכיל קוד, ובשפות מסויימות אף איננה עשויה מכילהלהכיל קוד.
* מתודה וירטואלית - מתודה שמוגדרת באובייקט אב כמתודה וירטואלית. אובייקטים שיירשו ממחלקת האב יוכלו לממש את המתודה מאובייקט האב באופן אחר (Override) וכך יתאפשר פולימורפיזם. לדוגמה, אובייקט האב הוא גיבור-על ויש לו מתודה בשם פעולת-על (SuperAction) שהיא מוגדרת כוירטואלית, ויש לה מימוש כלשהו. אובייקט שיירש תכונות מהאובייקט גיבור-על (למשל [[באטמן]]) יממש את המתודה פעולת-על באופן אחר. אובייקט שני שיירש תכונות מאובייקט האב גיבור-על (למשל [[סופרמן]]) יממש את המתודה פעולת-על באופן שלישי. לכל מופע של כל אחד משלושת האובייקטים תהיה אותה מתודה ועם אותם פרמטרים (או היעדרם) אבל עם מימוש, אופן פעולה שונה.
* מתודה סטטית - מתודה הניתנת לגישה באופן סטטי, כלומר שאין צורך במופע של מחלקה על מנת לגשת אליה. מתודה סטטית היא למעשה פונקציה, הנמצאת במרחב השם של המחלקה, ובשפות מסויימות היא בעלת הרשאות דומות להרשאות של מתודות שאינן סטטיות (מבחינת גישה למשתנים פרטיים וכדומה).
* מתודה אבסטרקטית - מתודה שמוגרת באובייקט אב אבסטרקטי (לא ניתן ליצור לו מופע), והאובייקטים היורשים מממשים בצורה שונה. להבדיל ממתודה וירטואלית, מתודה אבסטרקטית באובייקט האב אינה מכילה קוד.
* מתודה בוליאנית - קיימת כמעט בכל אובייקט מרכזי בתוכנה, מחזירה תשובה של אמת או שקר. לפי מוסכמה מתחילה במילה Is ובהמשך הנתון שרוצים לחקור, למשל ()IsLate(), IsTrueOrFalse.
* מתודה סטטית - מתודה שקיימת באובייקט סטטי, דהיינו אובייקט שאי אפשר ליצור לו מופע. האובייקט Math למשל ב-C# הוא אובייקט סטטי - קיים רק ייצוג יחיד שלו בזיכרון התוכנה ולא ניתן לשכפל אותו. כאשר רוצים לקבל שורש של מספר מפעילים את המתודה המתאימה של האובייקט: (Math.Sqrt(25 - יחזיר את השורש של 25, זאת מבלי לקרוא למופע של אובייקט מסוג Math.
 
לכל מתודה מכל סוג שהוא יש מסנני גישה, או שמתודה היא ציבורית (public) או שמתודה היא פרטית (private). מתודה ציבורית היא מתודה שניתן לפנות אליה גם מחוץ לאובייקט שבו היא מוגדרת. מתודה פרטית לעומת זאת ניתנת להפעלה רק בתוך האובייקט בו היא מוגדרת.
 
==העמסה, משתנים גלובליים ומשתנים מקומיים==