Download presentation
Presentation is loading. Please wait.
Published byAmberlynn Daniels Modified over 9 years ago
1
1.NETDelegates & eventsNOEA / PQC 2007 Delegates & events Observer pattern Delegates –Semantics –Cil – kode –Anvendelse Events
2
2.NETDelegates & eventsNOEA / PQC 2007 An example (from java!) public class FrameMedKnap extends javax.swing.JFrame { private javax.swing.JButton jButton1; public FrameMedKnap() { jButton1 = new javax.swing.JButton(); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); this.add(jButton1, java.awt.BorderLayout.CENTER); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { jButton1.setText("Der er trykket på knap"); }
3
3.NETDelegates & eventsNOEA / PQC 2007 Observer pattern Also called Observable in some litterature Might also be a interface
4
4.NETDelegates & eventsNOEA / PQC 2007 Callback interfaces Interfaces describes a common behavior that is shared by different classes Used in Observer pattern to construct a callback mecanism –The key is the Update() method in the Observer interface. –Note that it do not have to be named Update ;-) Callback can be used in languages that supports interfaces Callback can be implemented with function pointers in C (But then it is not by using observer pattern)
5
5.NETDelegates & eventsNOEA / PQC 2007 Subject (or Observable) implements an add and a remove method to add and remove observers to/from an internal container (typical an arraylist) Has also a notify() method that calls update() on all observer object in the container Observer implements the update() method. That will be the event handler in an event based system What is what in the java example?
6
6.NETDelegates & eventsNOEA / PQC 2007 Delegate Delegate is a new language construction in C# Java programmers will compare it to observer pattern C/C++, Pascal/Delphi… programmers will compare it to function pointers A delegate gives the possibility to pass a method of a class as a parameter to objects of another class. The method can be a static or an instance method Delegates are object oriented, typesafe and undependent of method name. Delegates are objects itselves of classes that iniherit from System.Delegate via System.MulticastDelegate
7
7.NETDelegates & eventsNOEA / PQC 2007
8
8 4 steps to create and use delegates 1.Declare a delegate with an appropiate signature 2.Define method(s) with the same signature 3.Instansiate a delegate object with a method as parameter The method will be encapsulated in the delegate 4.Call the method by the delegate
9
9.NETDelegates & eventsNOEA / PQC 2007 Step 1: 1.Declare a delegate with an appropiate signature. That means with the same parameters and return values as the method to be encapsulated delegate void Notifier(string sender);
10
10.NETDelegates & eventsNOEA / PQC 2007 Step 2: Define method with the same signature as the delegate void SayHello (string sender) { Console.WriteLine("Hello from "+ sender); } void SayGoodBye (string sender) { Console.WriteLine("Good Bye from "+ sender); }
11
11.NETDelegates & eventsNOEA / PQC 2007 Step 3: Instanstiate the delegate object and add the methods Note: Static methods might be used as well. HelloGoodbye MyObject=new HelloGoodbye(); //Instanstiate delegate and thereby a container Notifier notify = new Notifier(MyObject.SayHello); //Add a new Notifier to the container (multicast); notify += new Notifier(MyObject.SayGoodBye); //For the example: remove Notifier: notify -= new Notifier(SayHello);
12
12.NETDelegates & eventsNOEA / PQC 2007 Trin 4: Call the methods via the delegate: notify ("Pingo");
13
13.NETDelegates & eventsNOEA / PQC 2007 Demo Incl. ildasm
14
14.NETDelegates & eventsNOEA / PQC 2007 Events Delegates are often used for event based systems The Event keyword in C# makes it little easier The mecanism behind is the same. A event is a kind of delegate. Events are often used in object oriented gui programs Events can be used with advantage in other areas such as simulation and realtime systems.
15
15.NETDelegates & eventsNOEA / PQC 2007 Gui demo To see the use of event handlers
16
16.NETDelegates & eventsNOEA / PQC 2007 Events (not gui) 1.Declare a delegate with an appropriate signature 2.Declare the events a class can send 3.Define event handlers (methods) 4.Associate event and eventhandler 5.Trigger event by calling event handler by the event name.
17
17.NETDelegates & eventsNOEA / PQC 2007 Step 1: 1.Declare a delegate with an appropriate signature delegate void GreetingHandler(string sender);
18
18.NETDelegates & eventsNOEA / PQC 2007 Trin 3: Declare the events a class can send. Events are members in the class they are generated from public static event GreetingHander Hello; public static event GreetingHander GoodBye;
19
19.NETDelegates & eventsNOEA / PQC 2007 Step 3: Define methods with the same signature as the delegate void OnHello (string sender) { Console.WriteLine("Hello from "+ sender); } void OnGoodBye (string sender) { Console.WriteLine("Good Bye from "+ sender); }
20
20.NETDelegates & eventsNOEA / PQC 2007 Trin 4: Instanstiate the delegate object and add the methods that shall be called MinKlasse.Hello+=new MinKlasse.GreetingHandler(OnHello); MinKlasse.GoodBye+=new MinKlasse.GreetingHandler(OnGoodBye); Event name in the class Delegate name in the class Event handler (method to be called)
21
21.NETDelegates & eventsNOEA / PQC 2007 Step 5: Call the methods by the event name: // Somewhere in a class.. if(Hello != null) //Be sure there is an eventhandler { Hello("Pingo"); }
22
22.NETDelegates & eventsNOEA / PQC 2007 What is the difference between delegate and event? From http://en.csharp- online.net/CSharp_FAQ:_What_is_the_difference_between_delegate_and _event http://en.csharp- online.net/CSharp_FAQ:_What_is_the_difference_between_delegate_and _event An event offers more restricted access than a delegate. When an event is public, other classes are only able to add or remove handlers for that event: such classes cannot—necessarily—fire the event, locate all the handlers for it, or remove handlers of which they are unaware..
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.