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

תוכן שנמחק תוכן שנוסף
Matanyabot (שיחה | תרומות)
מ בוט החלפות: מאחר ש
מ חוזה (תכנות)
שורה 1:
ב[[תכנות]], המושג '''ממשק''' (ב[[אנגלית]]: Software Interface) משמש ל[[אבסטרקציה (מדעי המחשב)|אבסטרקציה]] של [[מחלקה (תכנות)|מחלקות]] התוכנה, ומגדיר את ה[[שגרה (תכנות)|פונקציות]] שעל מחלקה לממש כדי להיות שייכת אליו. במילים אחרות, אם אובייקט מממש ממשק כלשהו, אז הדבר מבטיח שלאובייקט תהיה התנהגות מסוימת. מימוש של ממשק הוא התחייבות של אובייקט למלא אחר מפרט של דרישות להתנהגות מסוימת, ניתן לראות בממשק [[חוזה (תכנות)|כחוזה]]. כאשר מחלקה מממשת את כל הפונקציות המוגדרות בממשק ניתן ליצור [[מופע (מדעי המחשב)|מופע]] שלה, אחרת היא נחשבת [[מימוש]] אבסטרקטי - כזה שדורש הרחבה על ידי מחלקה אחרת המשלימה את המימוש. שימוש בממשקים הוא נוהג של כתיבה נכונה ב[[הנדסת תוכנה]], כי בשיטה זו מתבצעת הפרדה בין המימוש בפועל לבין הדרישות שמאופיינות בממשק.
 
מגוון [[תבנית עיצוב|תבניות עיצוב]] (design patterns) עושות שימוש רב בממשקי תוכנה. ממשק התוכנה חשוב גם בפונקציות הנקראות בצורה מרוחקת (ראו [[RPC]]).
שורה 34:
</source>
 
הקונבנציה (המוסכמה בתחום) בעולם התוכנה היא שממשק תמיד יתחיל באות I, ולאחר מכן תיאור של החוזהה[[חוזה (תכנות)|חוזה]]. לדוגמה: ICanRead, ICanLearn וכו'. לאובייקטים שיממשו את החוזה יהיה מתודות בלי התחילת I, למשל CanRead ו-CanLearn.
 
אובייקט יכול לממשק מספר אינסופי של ממשקים וכך לענות על מספר דרישות. השימוש בממשק יכול לעזור לעקוף [[ירושה (מדעי המחשב)|עץ ירושה]] של אובייקטים. למשל, אם קיים אובייקט של Person שיורש מאובייקט Mammls, ואובייקט אחר בשם Table שיורש מאובייקט של SolidItems, אז ניתן באמצעות ממשק ליצור לשני האובייקטים מטודות דומות. כלומר, אין צורך שהאדם יירש תכונות ממחלקת החפצים המוצקים, ולהיפך, אין צורך להצהיר שהשולחן יירש תכונות ממחלקת היונקים.
שורה 63:
* '''INotifyPropertyChanged''' - ממשק שבא להבטיח שאובייקט יעדכן את הסביבה שלו כאשר שדה כלשהו שלו משתנה. הממשק חשוב לטכנולוגיית [[WPF]] ול-Binding. אם לאובייקט יש למשל שדה בשם FirstName והוא מוצמד לשדה טקסט של TextBlock, והאובייקט עונה על חוזה (ממשק) זה, אז ברגע שישתנה השדה שלו גם הטקסט על הפקד ישתנה. במילים פשוטות, שינוי של ערך בזיכרון מעדכן את ממשק המשתמש על השינוי שנעשה בו.
 
== ראו גם ==
 
* [[חוזה (תכנות)]]
 
[[קטגוריה:הנדסת תוכנה]]