PracticU

תרגיל מעשי Delegate Event

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מונחה עצמים - OOP - Object Oriented Programming - חומר לימוד של מדעי המחשב › תרגיל מעשי Delegate Event
מילון מושגים:
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
סטייט - המידע על מצבו הנוכחי של רכיב או אפליקציה בזמן נתון, שמשתנה ומשפיע על מה שמוצג.

תרגיל מעשי Delegate Event
תרגיל מעשי Delegate Event מציג תרגיל שלם ב-C#: בניית ספרייה (DLL) לבית חכם, שמכילה מתג ומנורות, עם דליגייטים לאירועי הדלקה וכיבוי. אחר כך נכתבת תוכנת לקוח שמשתמשת בספרייה ומוסיפה לה פעולות משלה.
השלבים העיקריים
1. הבקשה של הלקוח: חברה מייצרת סוויצ'ים חכמים לבתים חכמים, ומתבקשת לכתוב תוכנה שמנהלת מתג אחד ושלוש מנורות. בשלב הראשון ההדפסות הן למסך, ובהמשך יוחלפו בפקודות אמיתיות.
2. דרישות: בדיקת עומס יתר לפני כל הדלקה, אפשרות לדווח על מצב המתג ועל מצב כל מנורה, ואפשרות ללקוח להוסיף פעולות משלו במעמד ההדלקה או הכיבוי. הלקוח מקבל רק קובץ DLL, ולכן צריך למנוע ממנו שימוש לא נכון.
3. מחלקות: נכתבות שתי מחלקות, Lamp ו-Switch. ל-Lamp יש שם שנקבע בבנאי, ומצב (state) שמוצג דרך property עם set פרטי. כך הלקוח יכול לקרוא את המצב אבל לא לשנות אותו ישירות.
4. הדליגייט: ב-Switch מוגדרים שני דליגייטים, אחד להדלקה ואחד לכיבוי. מנורה שנוצרת עם מתג מסוים רושמת את הפונקציה שלה לדליגייטים של המתג.
5. פעולת on: המתג בודק עומס יתר, משנה את המצב שלו, מדפיס הודעה ומפעיל את הדליגייט. הדליגייט מפעיל את כל המנורות ואת כל פעולות הלקוח שנרשמו.
6. הלקוח: תוכנת הלקוח מוסיפה את ה-DLL כ-reference, יוצרת מתג ושלוש מנורות, ומוסיפה לפעולות on ו-off פונקציות משלה, למשל תיעוד או התראה.
7. ההרצה: ההדפסות מראות את הסדר: בדיקת המתג, הפעלת פעולות הלקוח, הדלקת המנורות וסיום פעולת המתג.
8. הפרצה והפתרון: הלקוח יכול לקרוא ישירות לדליגייט ולדלג על בדיקת העומס. לכן המרצה משנה את הדליגייטים למילה event, שמונעת הפעלה מבחוץ ומאפשרת רק הוספה והסרה של מאזינים.
טעויות נפוצות
- חשיפת דליגייט כ-public מאפשרת לקוד חיצוני להפעיל אותו ישירות ולעקוף בדיקות.
- מנורה שמשנה את המצב שלה בלי לעבור דרך המתג עוקפת את הבדיקות.
שימו לב
המרצה מדגיש שדליגייט ו-event מאפשרים להכניס קוד של הלקוח באמצע הפעולה של ה-DLL, בלי שה-DLL יידע מה הקוד הזה עושה.
בסיום התרגיל הסטודנט יודע לבנות ספרייה עם דליגייטים ואירועים, להשתמש בה מתוכנת לקוח, ולהבין מדוע event מגן על הקוד.
השיעור הבא בקורס: העמסת אופרטור-Operator Overloading

פרקי ההרצאה: תרגיל מעשי Delegate Event

  1. 00:00

    לקוח של מתגים לבית חכם

  2. 01:24

    מתג אחד שמדליק שלוש מנורות

  3. 02:18

    דרישות מנהל המוצר

  4. 03:47

    תכנון ה-DLL ותוכנת הלקוח

  5. 04:24

    יצירת פרויקט Class Library

  6. 05:33

    Constructor והודעות בצבע כחול

  7. 06:36

    בדיקת עומס יתר IsOverPower

תמלול ההרצאה: תרגיל מעשי Delegate Event

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

  1. 00:19

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

  2. 00:48

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

  3. 00:59

    אנחנו עושים רק סוויצ'ים לעור ואנחנו הולכים למכור את הפתרון שלנו לחברות שעושות את כל הבית החכם. החברה שלנו משמשת כמו קבלן משנה ליצרניות של בית חכם.

  4. 01:16

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

  5. 01:36

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

  6. 01:53

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

  7. 02:09

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

  8. 02:21

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

  9. 02:34

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

  10. 02:59

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

  11. 03:22

    לאפשר ללקוח להוסיף פעולות משלו במעמד ההדלקה או כיבוי של המתג. ודבר אחרון, הלקוח מקבל רק את קובץ ה-DLL וצריך למנוע ממנו שימוש לא נכון במערכת.

  12. 03:34

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

  13. 03:53

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

  14. 04:12

    אני מקווה שהבנתם. יופי. אז אנחנו נתחיל ממש ממש מאפס, נפתח Visual Studio Rack ונתחיל הכל הכל הכל לכתוב מאפס. אז בגלל שאנחנו רוצים בעצם לכתוב שני פרויקטים, אנחנו רוצים לכתוב גם את הפרויקט של ה-DLL וגם את הפרויקט של ה-Client שמשתמש בו.

  15. 04:30

    אז אנחנו נתחיל ממש לכתוב הכל מאפס, נעשה File New Project ונעשה קלאס. למה קלאס? כי אנחנו רוצים DLL. נקרא לו את זה Smart... לא יודע מה, לא יודע.

  16. 04:50

    עכשיו לא בא לי איזה שם, Smart House, אני יודע מה. אוקיי, סמארט סוויץ', סוויץ' חכם נקרא לו. אוקיי, יפה. אז הקלאס הראשון שיהיה לנו נקרא לו Lamp, מנורה.

  17. 05:09

    והקלאס השני שיהיה לנו נקרא לו סוויץ', יפה מאוד. יש לנו סוויץ' ויש לנו מנורה. למעשה אנחנו ניצור פה שלוש מנורות אחרי זה מהקלאס הזה.

  18. 05:25

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

  19. 05:58

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

  20. 06:15

    קונסול רייטליין, New Switch Just Created. ובואו נעשה ישר שכל הודעה של סוויץ' תהיה בצבע כחול. קונסול foregroundColor שווה בלו.

  21. 06:41

    נעשה יופי. יופי, כל הצבעים של סוויץ' יהיו בבלו. יופי, מה אנחנו רוצים לעשות בתוך הסוויץ'? יצרנו אותו, אנחנו בתוך הקלאס של הסוויץ'.

  22. 06:52

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

לקורס המלא: קורס תכנות מונחה עצמים OOP

ההרצאה הקודמת: אירועים - Events (הסבר נוסף)

ההרצאה הבאה: העמסת אופרטור-Operator Overloading

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

  • Event Emmiter
  • onClick Event Argument
  • אירועים - Event ב-Javascript
  • הסבר על SSIS Event Handlers

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

  • קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב