עבור לתוכן

שאלה ב#C

Featured Replies

פורסם

מה השימושים של INTERFACE?

:nixweiss:

תודה מראש ;)

פורסם

בגדול, ממשק (interface) זה מחלקה ללא מימוש. בניגוד לשפות כמו C++ שיש להם מנגנון של ירושה מרובה (די מורכב האמת), בשפות כמו Java ו C# הלכו על האפשרות של ירושה יחידה (אתה יכול לרשת ממחלקה אחת בלבד, במקום מכמה), אבל אתה יכול לממש הרבה ממשקים.

הממשק הוא חוזה לגבי איזה פונקצינליות המחלקה שלך מתחייבת לספק, הוא אומר מה, ולא איך. אתה מגדיר בו רשימת מכולת של Prototypes של פונקציות ודברים אחרים שהמחלקה שלך תספק.

היתרון פה מבחינת פולימופיזם, הוא שאתה יכול להגדיר פונקציות שהקלט / פלט שלהם הוא הממשק הנ"ל, ואז תוכל להעביר דרכם כל מחלקה אמיתית שמתחייבת לממש את הממשק הזה.

פורסם
  • מחבר

בגדול, ממשק (interface) זה מחלקה ללא מימוש. בניגוד לשפות כמו C++ שיש להם מנגנון של ירושה מרובה (די מורכב האמת), בשפות כמו Java ו C# הלכו על האפשרות של ירושה יחידה (אתה יכול לרשת ממחלקה אחת בלבד, במקום מכמה), אבל אתה יכול לממש הרבה ממשקים.

הממשק הוא חוזה לגבי איזה פונקצינליות המחלקה שלך מתחייבת לספק, הוא אומר מה, ולא איך. אתה מגדיר בו רשימת מכולת של Prototypes של פונקציות ודברים אחרים שהמחלקה שלך תספק.

את זה אני יודע

היתרון פה מבחינת פולימופיזם, הוא שאתה יכול להגדיר פונקציות שהקלט / פלט שלהם הוא הממשק הנ"ל, ואז תוכל להעביר דרכם כל מחלקה אמיתית שמתחייבת לממש את הממשק הזה.

דוגמא של קוד תעזור לי מאוד. תודה
פורסם

אם אתה יודע, אז למה אתה שואל (ותרשום בכותרת של הדיון לפחות C# interface)....

ניסית לחפש באינטרנט c# interface examples או c# interface tutorials

כי זה נושא די בסיסי שיש עליו ה-ר-ב-ה חומר עם ה-ר-ב-ה דוגמאות...

פורסם

למשל תחשוב על איזשהו תסריט לפיו אתה צריך לנהל התקשרויות למסדי נתונים שונים

OleDbConnection משמש להתחברות ל- Access

SqlConnection משמש להתחברות ל- SQL Server

OracleConnection משמש להתחברות למסד Oracle

בקטעים מסויימים בקוד שלך תעדיף להשתמש בקלאס ג'נרי יותר בשם

System.Data.Common.DbConnection

ולכתוב ביטוי כמו


System.Data.Common.DbConnection cn1 = new System.Data.SqlClient.SqlConnection();

כי אז בהמשך התכנית שלך אתה עובד מול קלאס אב ג'נרי שעבורך כמתכנת יהיה לך שקוף אם בזמן ריצה אתה מחובר ל-Access , Oracle או SQL Server

ואז אם לדוגמא התכנית שלך צריכה לתמוך בעתיד בעוד מסד נתונים חדש למשל של MySQL

ייתכן שתצטרך להוסיף רק שורה אחת לאתחול ההתחברות לאותו מסד , אבל יתר הקוד שלך לא ישתנה וישאר זהה

כמובן בתנאי שהיצרן של ה- מסד החדש , נותן לך dll ש-ממש את הקלאס האב DbConnection

הדוגמא שנתתי לך לא 100% מושלמת לשאלה שלך , כי DbConnection הוא למעשה קלאס אבסטרקטי אשר מממש כמה ממשקים שאחד מהם הוא IDbConnection וכמו שנאשר כאן שפת C# לא מאפשרת ירושה מרובה , ולכן מייקרוסופט יצרה קלאס אשר מממש עבורך כמה ממשקים וכך הקלאסים הספציפיים יותר שיורשים את ה - DbConnection מממשים רק את קטעי הקוד שהם ייחודיים ל-מסד הנתונים הספציפי שעבורים הם נבנו ויתר הקוד המשותף לכולם מקומפל בקלאס האבא

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים