Web Services Delegates and Events ליווי מקצועי : ארז קלר

Slides:



Advertisements
מצגות קשורות
בית ספר קהילתי - מדעי ישגב
Advertisements

פורטל בית ספרי.
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
תכנות בשפת C תרגול 11 - קבצים.
פרסום וקידום מכירות בכל שלב במחזור חיי המוצר, משתנה מדיניות התקשורת השיווקית שלו. פרט את מטרת התקשורת השיווקית בשלושה שלבים במחזור חיי מוצר כלשהו שתבחר.
תוכנה 1 בשפת Java שיעור מספר 5: עצמים
© Keren Kalif JPA קרן כליף.
הרצאה 02 סוגי משתנים קרן כליף.
תוכנה 1 בשפת Java שיעור מספר 9: "יוצא מן הכלל"
מבוא לתכנות ב-JAVA מעבדה 1
תוכנה 1 תרגול 13 – סיכום.
תרגול 1: סביבת העבודה ומבוא ל-Java
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
תוכנה 1 תרגול 12 – סיכום.
תרגול מס' 8 משתנים מיוחסים מבוא ל-C++ קלט/פלט ב-C++
תירגול 10: מבנים (structs) וקבצים
כל הזכויות שמורות לגבריאל אנקרי © 2017
תוכנה 1 בשפת Java שיעור מספר 10: "ירושה נכונה" (הורשה II)
Jump tables, review questions
פעולות בסביבת רובוטיקה
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
תוכנה 1 בשפת Java שיעור מספר 13: "אל תסתכל בקנקן"
Entity Relationship Diagram – ERD
תכנות בשפת C תרגול 8 רקורסיה
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
תרגול 6: פונקציות, סוגי משתנים, top-down design
תוכנה 1 בשפת Java שיעור מספר 5: מנשקים תחילה
כל הזכויות שמורות לגבריאל אנקרי © 2017
תפקידי התקשורת הצעה נערך על ידי מורי היל"ה במחוז צפון
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא לתכנות מונחה עצמים Object Oriented Programming
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
יישומון הר לעמק 2019 הוראות הפעלה.
פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע
מבוא לתכנות למערכות מידע
Computer Architecture and System Programming Laboratory
אלגוריתמי מיון רקורסיביים
המשך תכנות מונחה עצמים תרגול מס' 9.
כל הזכויות שמורות לגבריאל אנקרי © 2017
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
CLI vs GUI.
תוכנה 1 בשפת Java שיעור מספר 8: "ירושה נכונה" (הורשה II)
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
תוכנה 1 תרגול - Generics.
תוכנה 1 תשס"ח סמסטר ב' אוהד ברזילי ליאור שפירא
אוטומטים ושפות פורמליות
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבוא לתכנות ב- JAVA מעבדה 4
מבוא לתכנות בWINDOWS ד"ר אבי רוזנפלד.
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Introduction to Programming in C
עקרונות תכנות מונחה עצמים תרגול 8: OOP in C++
מצביעים Pointers – המשך...
(או כיצד ללמוד בצורה נכונה מתחילת הסמסטר)
(או כיצד ללמוד בצורה נכונה מתחילת הסמסטר)
מעבדה 2- עיצוב (עבור חלק ג)
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
תוכנה 1 בשפת Java שיעור מספר 10: "ירושה נכונה" (הורשה II)
Java Programming רשימות מקושרות - המשך
Engineering Programming A
תמליל מצגת:

Web Services Delegates and Events ליווי מקצועי : ארז קלר www.corner.co.il

Delegates . Events .

Delegates And Events What is Delegate? שם פונקציה הנה למעשה מצביע (Pointer) המכיל את הכתובת של הפונקציה בזיכרון , קריאה לפונקציה הנה למעשה קפיצה בזיכרון המחשב. Delegate , הנו למעשה מצביע לפונקציה, דהיינו, טיפוס אשר ייעודו להכיל את הכתובת של הפונקציה בזיכרון, בדיוק כמו שייחוס מכיל כתובת של אובייקט. באמצעות השימוש ב- Delegate נוכל לגשת ולהפעיל שיטה, בדיוק כמו שבאמצעות הייחוס ניתן לבצע פעולות על אובייקט. Delegates הם למעשה שיטות משוב (Callback Function).

Delegates And Events What is Delegate? GUI (Graphic User Interface ) . תכנות אסינכרוני (Asynchronous Programming). בנוסף נעזר ב- Delegates במימוש אירועים (Event), עליהם נרחיב בהמשך.  בניית קשר דו סיטרי בין מחלקות מכילות למחלקות מוכלות.

Delegates And Events What is Delegate? בעולם ה- .NET Framework הגדרת Delegate, משמעותה, יצירת מחלקה חדשה ששמה כשם ה – Delegate. המחלקה נוצרת בצורה מרומזת (Implicit). מחלקה זו יורשת מחלקה בשם MulticastDelegate אשר בתורה יורשת את המחלקה Delegate אשר יורשת ישירות את המחלקה Object. 

Delegates And Events Delegate תחביר : תחביר :  מצהירים על Delegate באמצעות המילה השמורה Delegate , בהגדרת Delegate מגדירים גם את חתימת המתודות אשר ה- Delegate יכול להתייחס אליהם. במקרה זה המתודה חייבת להחזיר void ואין היא יכולה לקבל אף פרמטר, כל ניסיון להעביר ל- Delegate כתובת של מתודה בעלת חתימה שונה יגרור שגיאת קומפילציה. שורה זו מגדירה מחלקה חדשה בשם MyDelegate . הערה: ה – Syntax קצת מטעה , אין מדובר בהצהרה על מתודה בשם MyDelegate namespace WhatIsDelegate {    delegate void MyDelegate();    . . }

Delegates And Events יצירת מופע של Delegate : הגדרת ה- Delegate namespace WhatIsDelegate {    delegate void MyDelegate();    class App    {       static void Func()       {             Console.WriteLine("Delegate");       }       static void Main(string[] args)             MyDelegate del = new MyDelegate(Func);             . . .        }     } } הגדרת ה- Delegate יצירת מופע של Delegate : del הנו ייחוס מהמחלקה MyDelegate , כאשר נקצה אובייקט מהמחלקה MyDelegate נשלח ל- Ctor כפרמטר את שם המתודה שהוא ייוחס אליה. חתימת המתודה חייבת להיות זהה להגדרת ה- Delegate . הקצאת ה- Delegate

Delegates And Events יצירת מופע של Delegate : namespace WhatIsDelegate {    . . .    class App    {       . . .       static void Main(string[] args)       {             . . .             del();       }    } } יצירת מופע של Delegate : הקריאה הנ"ל תפעיל את המתודה Func משום שה- Delegate מחזיק את הכתובת שלה. הפעלת ה- Delegate

Delegates And Events דוגמה: שלב א' – הצהרה על Delegate :  דוגמה: שלב א' – הצהרה על Delegate : delegate void PointChangedDelegate(Point p); שלב ב' – הגדרת ייחוס מטיפוס ה- Delegate כחבר מחלקה : public class Point {             private int m_X;             private int m_Y;             public PointChangedDelegate Callback;             . . . }

Delegates And Events דוגמה – המשך: שלב ג' – הפעלת ה- Callback Function: public class Point {             . . .             public int X             {                   get {...}                   set                   { . . .                       Callback(this);                   }             } }

Delegates And Events דוגמה – המשך: class App       {             private static void PointChanged(Point p) {…}             static void Main(string[] args)             {                   Point p = new Point();                   p.Callback = new                  PointChangedDelegate(App.PointChanged);                   . . .             }       }

Delegates And Events Multicast Delegate ה- Delegate הנו מערך של Delegates ב-.NET   הינם למעשה Multicast Delegates. המשמעות היא ש- Delegate יחיד יכול להתייחס ולהפעיל מספר מתודות משוב ולא רק מתודה יחידה . ה- Delegate הנו מערך של מצביעים למתודות.  

הקצאת ה- Multicast Delegates Delegates And Events class StamTest {       public static void Callback1(Point p){} } class App       public static void Callback2(Point p){}        static void Main(string[] args)        {               MyDelegate del1 = new MyDelegate (App.Callback1);            MyDelegate del2 = new MyDelegate (App.Callback2);            MyDelegate del3 = new MyDelegate (StamTest.Callback1);            Point p = new Point();            p.Callback = del1+del2+del3;            p.Print();        } הקצאת ה- Delegates הקצאת ה- Multicast Delegates

Delegates . Events .

Delegates And Events Events באמצעות אירוע יכול אובייקט להודיע לאובייקטים אחרים שמשהוא התרחש בו. אירוע (Event) הנו הודעה אשר נשלחת על ידי אובייקט לאובייקט או לאובייקטים אחרים, על מנת לדווח להם על פעילות המתרחשת בו. ה- Trigger לפעילות זו יכול לנבוע מפעולת משתמש (לדוגמה: לחיצה על עכבר, הקלדה במקלדת, לחיצה על פקד וכו'), כתוצאה מביצוע אלגוריתם או ממערכת ההפעלה. באמצעות אירועים, אובייקטים יכולים להירשם כ"בעלי עניין", המעונינים לקבל דיווח מאובייקט אחר על שינויים או פעילויות המתרחשים בו. האובייקט היוזם את שליחת ה- Event מכונה לעיתים מפיץ  (Publishers), האובייקטים הלוכדים את האירוע ומגיבים עליו מכונים מנויים (Subscribers).

Delegates And Events Events Publisher- מפיץ מעלה/מפעיל/מעורר את האירוע וכתוצאה מכך מופעלים מתודות באובייקטים המנויים. אובייקט זה מכונה גם Sender . Subscriber-מנוי אובייקטים הנרשמים כבעלי עניין בפעולות המתרחשות במפיץ, מספקים מתודה אשר מופעלת עם העלאת האירוע. אובייקט זה מכונה גם Receiver .

Delegates And Events Events המכניזם הנקרא Event מתבסס על Delegates. תפקיד  ה- Delegates לייסד "ערוץ תקשורת"  בין האובייקט השולח את האירועים (Publisher) לבין האובייקט המקבל ומטפל באירועים (Subscriber). ה- Delegate שומר עבור האירוע כתובת המתודה של אובייקט היעד (Subscriber). המשמעות המעשית של העלאת אירוע הנה הפעלת ה- Delegate, אשר יפעיל את המתודה שתטפל באירוע (אשר שייך ל- Subscriber). מכיוון ש- Delegates יכולים להכיל אוסף של ייחוסים למתודות, העלאת אירוע (Raising Event), יכולה לגרום הפעלת מספר מתודות במספר אובייקטים שונים.

Delegates And Events Events

Delegates And Events Events ניתן לראות את המכניזם הנ"ל המגדיר ושולח אירועים כמורכב משלושה ממדים  המשלימים זה את זה: הגדרת ה- Event. הרשמה ל- Event. העלאת ה- Event.

Delegates And Events Events - ממד ראשון: הגדרת Event כחבר מחלקה המתבסס על Delegate אשר הוגדר קודם לכן. public delegate void DelegateName(Type t1,Type t2); במחלקת ה- Publisher נכתוב public event DelegateName EventName; השורה הראשונה מגדירה Delegate אשר מתאר את החתימה של מתודת הטיפול באירוע (Event Handler). בשורה השניה שבדוגמה מוגדר Event שמסתמך על ה- Delegate, אשר הוגדר קודם לכן. בניגוד ל- Delegate, ניתן להגדיר Event כ- static.

Delegates And Events Events- ממד שני: העלאת ה- Event (Raising Event) מתבצעת גם היא במחלקה היוזמת. לדוגמה: EventName(value1,value2); פעולה המתבצעת באמצעות שם ה- Event, בצרוף המידע אשר נשלח למתודה המטפלת (Event Handler).

Delegates And Events Events - ממד שלישי: הרשמה ל- Event. לדוגמה: PublisheName.EventName += new PublisherName.DelegateName(EventHandlerName); מחלקה המעונינת להירשם כבעלת עניין באירוע חייבת להירשם ככזו ולספק ל- Event את המתודה אשר תטפל באירוע, כתובתה של אותה המתודה מועבר ל- Delegate.

Delegates And Events Events – דוגמה public delegate void MyDelegate(int n); public class MyClass { private int m_Num; public event MyDelegate MyEvent; public MyClass(int num) { ... } public int Num set m_Num = value; MyEvent(m_Num); } get { . . . } Events – דוגמה הגדרת ה- Delegate הגדרת ה- Event המתבסס על ה- Delegate הפעלת ה- Event Raise Event

Delegates And Events Events – דוגמה class Program { static void Method(int n) Console.WriteLine("Num new value = {0}",n); } static void Main(string[] args) MyClass c = new MyClass(12); c.MyEvent += new MyDelegate(Method); c.Num = 11; c.Num = 12; c.Num = 13; רישום ה- Event שינוי ערכו של Num גורם להעלאת Event .

Delegates And Events עריכה מקצועית : ארז קלר www.corner.co.il