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

הוסרו 9 בתים ,  לפני 3 שנים
אין תקציר עריכה
מ (בוט החלפות: \1הפך)
אין תקציר עריכה
אובייקט יכול לממשק מספר אינסופי של ממשקים וכך לענות על מספר דרישות. השימוש בממשק יכול לעזור לעקוף [[ירושה (מדעי המחשב)|עץ ירושה]] של אובייקטים. למשל, אם קיים אובייקט של Person שיורש מאובייקט Mammls, ואובייקט אחר בשם Table שיורש מאובייקט של SolidItems, אז ניתן באמצעות ממשק ליצור לשני האובייקטים מטודות דומות. כלומר, אין צורך שהאדם יירש תכונות ממחלקת החפצים המוצקים, ולהפך, אין צורך להצהיר שהשולחן יירש תכונות ממחלקת היונקים.
 
הממשק לא מכתיב כיצד יש לממש את המתודות שהוא דורש. בדוגמה לעיל למשל, אובייקט אחר יכול למממשלממש את המתודה הבוליאנית (מחזירה אמת או שקר) DoThat, בכך שהוא יחזיר אמת כל עוד הפרמטר שונה מאפס למשל. אין אפשרות שממשק יחייב אובייקט להכיל שדות מסוימים (אופן שמירת מידע), אלא רק מתודות (התנהגויות).
 
==ממשקים נפוצים==
 
* '''IImmutable''' - ממשק שבא להבטיחשמבטיח שלא יהיה ניתן לשנות את המידע שאובייקט מכיל בתוכו. דוגמה לאובייקט כזה הוא הטיפוס String [[סי שארפ|בשפת C#]]. טיפוס זה מייצג מילה, ומורכב ממערך של אותיות. אין אפשרות לגשת לאינדקס של אות מסוימת במילה, אינדקס אפס למשל עבור האות הראשונה במילה ומשם לשנות את האות. טיפוס נתונים זה ניתן לשרשור (חיבור של מילים) או להשמה מחדש, אבל כאמור אין אפשרות לגשת לאות מסוימת במילה ולהחליפה באות אחרת.
* '''IComparable''' - ממשק שמבטיח שהאובייקט הוא בר-השוואה יחסית לאובייקטים אחרים מאותו סוג. למשל הטיפוס int מקיים את הממשק, ולפיכך ניתן להשוות בין מספר שלם אחד למשנהו. הממשק מכיל רק מתודה אחת בשם CompareTo והיא מחזירה אחד משלושה ערכים. אם הערך המוחזר הוא 1- אז האובייקט שמשווה את עצמו לאובייקט אחר כפרמטר - קטן מהאובייקט המושווה. אם הערך שווה לאפס אז שני האובייקטים שווים, ואם הערך הוא 1+ אז האובייקט המשווה גדול מהאובייקט המושווה.
דוגמה לקוד ב-C#:
1,354

עריכות