interface שימושים ומטרה - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

interface שימושים ומטרה


bdoron

Recommended Posts

אוקי, תרגיל קטן:

תכתוב פונקציה שמקבלת מערך של int וממיינת אותו בסדר עולה, באמצעות מיון בועות.

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

אחר כך תגדיר לך מחלקה בשם MyClass עם שני שדות מספריים - a ו-b, ותכתוב פונקציה שמקבלת מערך של MyClass וממיינת אותם קודם כל לפי a ואז לפי b (כלומר, x יבוא לפני y אם x.a<y.a או אם x.a==y.a וגם x.b<y.b).

למדת כבר Generics?

קישור לתוכן
שתף באתרים אחרים

מה הקשר? generics זה פיצ'ר של #C. אם אתה לא יודע מה זה אז לא למדת אותו (רק שאלתי כי אני צריך לדעת איך להמשיך את ה"תרגיל").

חוץ מזה לא התייחסת לתרגיל שלי.

אפשר לדעת מאיזה מקור אתה לומד?

קישור לתוכן
שתף באתרים אחרים

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

עכשיו הגעתי לג'ון ברייס ואני 4 חודשים מתעסק בשטויות!!! אז הבנתי שאין מה לעשות מה שאני לא אלמד לבד אף אחד לא ילמד

כל שאלה שאני שואל את המרצה שלי הוא אומר לי , ממממ תרשום לי את זה באימל ואני אשתדל לעזור..

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

רק טובות!!! ואם אתם לא הייתם עוזרים לי תאמין לי שהייתי כרגע במצב של חצי מהידע שצברתי (לא שהוא יותר מדיי גדול חחח )

בכל אופן אני כרגע קורא את העניין הזה של מחלקה ג'נרית... אז בוא נעשה איזה cut לגבי השאלה ששאלתי בהתחלה, נמשיך אותו בהמשך אבל אני רוצה קודם כל לדעת את הנושא הזה של מחלקה generic... לפעמים המושגים קצת מבלבלים אותי.. אבל מי מה שקראתי אני מבין שבעצם generics בא לפתור את העניין שיש מקומות שצריכים שפרמטר יהיה גם value type וגם reference type

קראתי דוגמא בנושא והבנתי אבל שוב, בגדול.. אני לא יודע באמת מתי אני צריך reference type שיהיה גם value type..

וזה לא שאני לא מבין את הדוגמאות, אני מבין ! רק אני לא מבין מאיפה הם נובעים..

תראה את הדוגמא שקראתי באינטרנט

http://www.codeproject.com/Articles/2838/Understanding-the-Generic-Type-in-C

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

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

קישור לתוכן
שתף באתרים אחרים

הלינק שנתת גם לא קשור ל-generics, אין לי מושג איך הגעת אליו (מה גם שהמאמר הזה מ-2002, שלוש שנים לפני שהפיצ'ר הזה בכלל נכנס לשפה). בכל מקרה, המטרה שלי לא הייתה שתתחיל ללמוד עכשיו generics, פשוט שאלתי אם אתה מכיר את הנושא.

קישור לתוכן
שתף באתרים אחרים

אתה מתכוון לספר?

או למדריך בן אדם

אני מצאתי עכשיו לינק

תגיד לי אם לדעתך הוא מספיק מקצועי וטוב בשבילי

http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx

- - - תגובה אוחדה: - - -

The second (and often more severe) problem with the Object-based solution is type safety. Because the compiler lets you cast anything to and from Object, you lose compile-time type safety. For example, the following code compiles fine, but raises an invalid cast exception at run time:


Stack stack = new Stack();
stack.Push(1);
//This compiles, but is not type safe, and will throw an exception:
string number = (string)stack.Pop();

לא הבנתי בדיוק על מה מדברים, לפי מה שמסבירים פה הקוד מתקמפל, אבל הוא זורק אקספשן? למה בדיוק?

קישור לתוכן
שתף באתרים אחרים

generic או גנריות בכללי בא להקל בכתיבת קוד ולחסוך משאבים, אם אתה צריך לכתוב פונקציה (כמובן זה עובד גם על מחלקות וכו' אבל אני אתמקד בפונקציות) שתתאים לכמה סוגי משתנים, יש לך כמה דרכים לעשות את זה:

1. פשוט ל"העמיס" פונקציות, זאת אומרת לכתוב פונקציה לכל סוג של משתנה.

2. לכתוב פונקציה אחת ולהשתמש בobject ו כך שזה יתאים לכל סוגי המשתנים.

שתי הדרכים לא טובות או בגלל שזה המון קוד לכתוב וכן זה תופס זיכרון, או אם אתה משתמש בobject אתה תצטרך להשליך (cast) כל פעם שקוראים לפונקציה וזה דורש משאבים ומאט את התוכנה.

לכן יצרו דרך שלישית וזה הגנריות, אתה בצורה מסויימת מגדיר לפונקציה שלא תצפה לסוג מסוים אלא שתפעל על כל סוג, וכך אתה פותר את הבעיה הזאת, יותר פירוט ואיך עושים זאת:

כנס לקישור הזה,

או שתקרא את זה, נכון זה קצת ארוך אבל זה שווה את זה מדריך מצויין של ניר אדר על גנריות.

שניהם מדריכים מצוינים לדעתי.

קישור לתוכן
שתף באתרים אחרים

מה הקשר בין callback function לבין ממשק?

לא מעביר ביקורת פשוט שואל, כי אני יודע שcallback function זה מתודה שאני מפעיל אותה דרך delegate

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

קישור לתוכן
שתף באתרים אחרים

בג'אווה אין delegates. אתה לא יכול להעביר "מצביע לפונקציה".

לכן, הפתרון הוא שימוש בממשקים.

נניח לדוגמה שב-#C יש לך delegate כזה:

delegate int MyDelegate(string x, string y);

(דהיינו, מצביע לפונקציה שמקבלת שתי מחרוזות ומחזירה int)

אז בג'אווה מה שעושים הוא להגדיר ממשק עם פונקציה בודדת, דהיינו ככה:


public interface MyDelegate {
int f(string x, string y);
}

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...