משיב מוביל
ממשקים

שאלה
-
למה לא לרשת מחלקה? למה ממשק? למה הוא עדיף?
- הועבר על-ידי Arik Poznanski יום שישי 12 אוגוסט 2011 08:43 רלוונטי לפורום #C (מאת:פיתוח ב- .Net)
- הועבר על-ידי Hengzhe Li יום רביעי 18 ינואר 2012 07:29 (מאת:Microsoft Visual C#)
תשובות
-
שלום
בודאי שיורשים מחלקה. מחלקה היא אובייקט שמכיל פונקציונליות מסוימת, וארכיטקטורה נכונה של תוכנה מחלקת את הפונקציונליות שלה למחלקות בסיס ומימושים שונים שלהם על ידי מחלקות ממוקדות יותר.
ממשק לא יורשים אלא מממשים. כלומר ממשק הוא הצהרה על הפונקצינליות שעל מחלקה לממש כל מנת להיות מחלקה מסוג הממשק שאפשר ליצור מופע שלה. כלומר מחלקה זה אוביקט שמכיל פונקצינליות שאפשר ליצור מופע שלה ולהשתמש בה, וממשק זה רק הצהרה על כל הפונקציות שמחלקה מסוימת צריכה לממש על מנת שיהיה אפשר להשתמש בה, ולכן ממשק נקרא גם contract כלומר חוזה.
לדוגמא:
אני יוצר מחלקה שמחזיקה פונקציונליות של מחשבון. כלומר יש בה פונקציות שיודעות לקבל שני מספרים ולבצע חיבור חיסור וכו'. מהמחלקה הזו אני יכול ליצור מופע ולהתשמש בו הלכה למעשה באפליקציות שונות. כאשר ארצה לכתוב ממשק של מחשבון, הממשק יכיל רק את ההגדרות הבסיסיות, כלומר איזה פונקציות צריכה מחלקה לממש על מנת שנוכל ליצור ממנה מופע של מחשבון, אבל הממשק לא מכיל כלל את הלוגיקה של איך מחברים מספר אחד לשני, אלא רק שמחלקה שמממשת את הממשק צריכה להכיל פונקציה שמחברת שני מספרים שאותם היא מקבלת כפרמטרים.
אם זה עדיין לא מובן תשאלי ואסביר יותר.
בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
- סומן כתשובה על-ידי Shirly11 יום שלישי 17 מאי 2011 18:38
כל התגובות
-
שלום
בודאי שיורשים מחלקה. מחלקה היא אובייקט שמכיל פונקציונליות מסוימת, וארכיטקטורה נכונה של תוכנה מחלקת את הפונקציונליות שלה למחלקות בסיס ומימושים שונים שלהם על ידי מחלקות ממוקדות יותר.
ממשק לא יורשים אלא מממשים. כלומר ממשק הוא הצהרה על הפונקצינליות שעל מחלקה לממש כל מנת להיות מחלקה מסוג הממשק שאפשר ליצור מופע שלה. כלומר מחלקה זה אוביקט שמכיל פונקצינליות שאפשר ליצור מופע שלה ולהשתמש בה, וממשק זה רק הצהרה על כל הפונקציות שמחלקה מסוימת צריכה לממש על מנת שיהיה אפשר להשתמש בה, ולכן ממשק נקרא גם contract כלומר חוזה.
לדוגמא:
אני יוצר מחלקה שמחזיקה פונקציונליות של מחשבון. כלומר יש בה פונקציות שיודעות לקבל שני מספרים ולבצע חיבור חיסור וכו'. מהמחלקה הזו אני יכול ליצור מופע ולהתשמש בו הלכה למעשה באפליקציות שונות. כאשר ארצה לכתוב ממשק של מחשבון, הממשק יכיל רק את ההגדרות הבסיסיות, כלומר איזה פונקציות צריכה מחלקה לממש על מנת שנוכל ליצור ממנה מופע של מחשבון, אבל הממשק לא מכיל כלל את הלוגיקה של איך מחברים מספר אחד לשני, אלא רק שמחלקה שמממשת את הממשק צריכה להכיל פונקציה שמחברת שני מספרים שאותם היא מקבלת כפרמטרים.
אם זה עדיין לא מובן תשאלי ואסביר יותר.
בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
- סומן כתשובה על-ידי Shirly11 יום שלישי 17 מאי 2011 18:38
-
-
אני חייב לציין שהשאלה נדרשת, למען האמת שואלים אוה כמעט בכל רעיון עבודה....
למי שמגיע מ C++ אחד המדברים שהוא שואל את עצמו מה זה ממשק, ובטוח שהוא שואל את עצמו למה אים הורשה מרובה.
אז בעצם ה C++ אין ממשק כי יש לנו הורשה מרובה שבה ניתן להגדיר מספר מחלקות אבסטרקטיות ללא מימוש ומי שיורש מהם חייב לממש את מה שמוגדר (חוזה).
ונא לא ליפול מהכיסא גם ב JAVA אין הורשה מרובה. זה מאותה הסיבה שאין גם ב NET. זה מורכב מידי להסביר בתשובה זו אבל בגדול לא רוצים להתעסק עם "בעיית היהלום".
לכן בעצם ממשק== חוזה מה לגשר לנו על הפער המוסבר.
Li