PracticU

Generics - חלק 6

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › Generics - חלק 6
מילון מושגים:
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
ירושה - מנגנון בתכנות מונחה עצמים שבו מחלקה יורשת תכונות ופעולות ממחלקת אב, ויכולה להרחיב אותן.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.

Generics - חלק 6
בשיעור הזה בונים אירוע (event) בעזרת דלגייט גנרי מוכן בשם EventHandler, ומראים איך נרשמים אליו ומקבלים את הנתונים שלו.
השלבים העיקריים
1. הרעיון: מחלקה שמייצרת מספרים רנדומליים מדווחת על מספר כשהוא מתחלק ב-7, מסתיים ב-7 או מכיל 7. הדיווח נעשה באמצעות אירוע.
2. מחלקת נתוני האירוע: המחלקה Found7BoomEventArgs יורשת מ-EventArgs ומכילה את המספר שנמצא. הירושה נדרשת כי הדלגייט הגנרי מקבל רק טיפוס שיורש מ-EventArgs.
3. הגדרת האירוע: האירוע מוגדר לפי EventHandler של הטיפוס הזה, והוא מופעל רק אם יש נרשם לאירוע.
4. בלי דלגייט חדש: לא צריך להגדיר דלגייט לכל אירוע. משתמשים ב-EventHandler הגנרי, שמקבל שני פרמטרים: שולח האירוע (object) ונתוני האירוע מהטיפוס שנבחר.
5. הרשמה לאירוע: מי שמשתמש במחלקה נרשם לאירוע ומקבל את המספר שנמצא בכל פעם שהוא מופעל.
6. הדגמה: אחרי שהמחלקה מייצרת מספרים בלולאה עם השהיה קצרה, מוצגים רק המספרים שמקיימים את התנאי. בשיעור מודגם שהשיטה עובדת בלי כתיבת דלגייט בכלל.
7. שימוש בדוגמה אמיתית: בדוגמה אחרת מחפשים מספרים זוגיים ברשימה בעזרת Find עם פרדיקייט. ו-ForEach מפעיל פעולה על כל פריט בלי לולאה ידנית.
בסיום השיעור ברור שאירוע גנרי נבנה בעזרת EventHandler, בלי צורך לכתוב דלגייט חדש לכל סוג של אירוע.
השיעור הבא בקורס: Generics - חלק 7

פרקי ההרצאה: Generics - חלק 6

  1. 00:00

    EventHandler גנרי לאירועים

  2. 01:08

    מחלקת יצירת מספרים רנדומליים

  3. 02:03

    לוגיקת המשחק Seven Boom

  4. 03:07

    בניית מחלקת EventArgs

  5. 03:45

    הגדרת אירוע עם EventHandler

  6. 05:37

    הרשמה לאירוע ובדיקה

תמלול ההרצאה: Generics - חלק 6

הטקסט המלא של הדקות הראשונות בהרצאה «Generics - חלק 6» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:05

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

  2. 00:24

    בואו נעשה הדמיה. ניקח איזושהי מחלקה, או ליתר דיוק בואו אפילו נבנה אותה בנפרד, בכדי לראות את הכל side by side. בינינו פה איזושהי מחלקה שבנינו.

  3. 00:48

    בואו ניקח מחלקה שמייצרת מספרים רנדומליים. Random Numbers Creator. ומה שאנחנו רוצים לעשות זה לקחת איזושהי פונקציה שתרוץ בלולאה, בואו נניח איזה אלף פעם, ותייצר לו מספרים רנדומליים.

  4. 01:37

    ואני אצייר מספרים בין 1 ל-100. אבל במידה והמספר שיצרנו מתחלק ב-7 ללא שרי, שהמספר שיצרנו מסתיים ב-7, 10 שווה 7, או שהמספר שיצרנו מכיל 7 אנחנו רוצים לדווח עליו באירוע איך אנחנו עושים את זה פה אנחנו צריכים לרשום רק 0 בואו נראה אם הקומפילציה עברה סבבה איך אנחנו מדווחים עליו באירוע אנחנו צריכים לבנות

  5. 02:49

    איזה שהוא איזה שהיא מחלקה שנקרא לה 7 בום לפי המשחק 7 בום שבע בום EventArgs יורשת את EventArgs יש לנו פה public read only int number יש לנו פה איזשהו קונסטרקטור שמקבל את ה-number ואנחנו רוצים עכשיו לבנות אירוע שיוכל לדווח את המספר הזה.

  6. 03:42

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

  7. 04:25

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

  8. 04:37

    אז בואו נגדיר פה את זה ונקרא לאירוע found 7 boom number וכל מה שאנחנו רוצים לעשות זה להעלות אותו this ומשתנה מסוג new ולשלוח את המספר שנמצא. כמובן, רק אם מישהו אכן נרשם לנו לאיבנט הזה.

  9. 05:15

    זאתי מחלקה שאנחנו יכולים לקרוא לה, היא מייצרת לנו מספרים רנדומליים, בואו אפילו נעשה פה איזה המתנה thread.clip של אפילו 10 מילישניות, אז אלף פעמים תמצא לנו פה מלא מלא מלא מספרים שכולם קשורים למספר 7, בואו נבדוק אותה.

  10. 05:46

    נייצר איזשהו משתנה מ-random number creator, נירשם לפונקציה לאירוע בצורה כזאת ונציג את המספר e.number בואו נציג אותו בצורה כזאתי ואז אנחנו יכולים פשוט ללכת קריאייטור ולקרוא

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: Generics - חלק 5

ההרצאה הבאה: Generics - חלק 7

הרצאות קשורות מקורסים אחרים

  • Generics

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס WCF - תקשורת למתקדמים בדוט-נט