המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

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

מצגות קשורות


מצגת בנושא: "Web Services Delegates and Events ליווי מקצועי : ארז קלר"— תמליל מצגת:

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

2 Delegates . Events .

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

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

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

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

7 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

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

9 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;             }

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

11 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);                   . . .             }       }

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

13 הקצאת ה- 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

14 Delegates . Events .

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

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

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

18 Delegates And Events Events

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

20 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.

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

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

23 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

24 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 .

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


הורד את "ppt "Web Services Delegates and Events ליווי מקצועי : ארז קלר

מצגות קשורות


מודעות Google