Introducción Eventos y Delegados.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 9: DESARROLLO Y USO DE MÉTODOS Ing. Ronald Criollo.
Advertisements

CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Programación orientada a objetos en Visual Basic .NET
Métodos y parámetros.
Introducción a C#.
Curso de java básico (scjp)
Definición de Clases y Variables de referencia.
Herencia en C#.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Fundamentos de la programación orientada a objetos
Uso de variables de tipo referencia
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Elementos básicos del Lenguaje
Procedimientos y Funciones
Inner classes CAPITULO 8.
FUNCIONES EN C.
INFORMATICA I Funciones CLASE 13.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
Aplicación del paradigma orientado a objetos
Programación Orientada a Objetos en Java
Marzo 2007 Lenguajes Visuales Clase III.
Método en Java.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
JAVA 1.5 Fernando Almeida Octubre Introducción Java Specification Request (JSR) 14Java Specification Request (JSR) 14 propone introducir tipos y.
Realizado por: Bertha Palomeque A. Rodrigo Barzola J. Sensor de Temperatura utilizando el Starter Kit Javelin Stamp.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
TALLER DE PROGRAMACIÓN III
Herencia y Polimorfismo en JAVA
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Creación de Aplicaciones
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Variables polimórficas (plantillas): definición, uso y aplicación
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
SCJP Sun Certified Programmer for Java 6
Clase Teórica No. 4 Programación IV
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
Programación III Clase 06 Funciones.
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Sintaxis de C# (Declaraciones y Tipos)
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Herramientas de polimorfismo y herencia en C++
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
ESMERALDA LIMÓN ESCUTIA AURORA MENDOZA PASTRANA RUTH LÓPEZ muñoz I.S.C
Detalles Generales sobre Java
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Metodología de Programación Clase 1 Leonel Lagos V
/** * Write a description of class General here. */ public class General { // instance variables - replace the example below with your own private int.
CONCEPTOS.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
1 Definición y Conversión de datos Agustín J. González ELO-329.
TALLER POO JAVA ERNESTO GOMEZ VARGAS. OBJETIVOS REALIZAR UNA APLICACIÓN SENCILLA DE P.O.O FAMILIARIZARSE CON LA HERRAMETA NETBEANS APLICAR EL CONCEPTO.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
ESTRUCTURA DE UN PROGRAMA EN
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

Introducción Eventos y Delegados

Agenda Delegados: Eventos: Definición y Características Utilizar Delegados Devolución de llamadas Multidifusion Métodos Anónimos Ejemplos Eventos: Suscribir y cancelar la suscripción a eventos

Delegados Principales características: Son similares a los punteros a función de C++, pero poseen seguridad de tipos. Permiten pasar los métodos como parámetros. Pueden utilizarse para definir métodos de devolución de llamada. Pueden encadenarse Ej: llamar a varios métodos en un solo evento. Métodos Anónimos en C# 2.0 Permiten pasar bloques de código como parámetros en lugar de utilizar métodos definidos independientemente.

Delegados Un delegado es un tipo que hace referencia a un método. Cuando se asigna un método a un delegado, éste se comporta exactamente como el método. Definición: public delegate int PerformCalculation(int x, int y);

¿Cómo utilizar Delegados? Crear delegado public delegate int PerformCalculation(int x, int y); Crear método para el delegado public static int Product(int x, int y){ return x * y; } Definir referencia a delegado y asignar método PerformCalculation pc = Product; Llamar al delegado pc(3,2);

Utilizar Delegados Los tipos de delegados se derivan de la clase Delegate en .NET Framework. Los tipos de delegados son sealed. Puesto que el delegado con instancias es un objeto, puede pasarse como parámetro o asignarse a una propiedad. Devolución de llamada: un método recibe un delegado como parámetro y llama al delegado posteriormente.

Ejemplo: Devolución de llamada El método siguiente utiliza el tipo PerformCalculation como parámetro: public void MethodWithCallback(int param1, int param2, PerformCalculation callback) { callback( param1, param2); } A continuación, se puede pasar el delegado creado anteriormente a ese método: MethodWithCallback(3, 2, pc); y retornaría el resultado siguiente: 6

Delegados - Multidifusión Un delegado puede llamar a más de un método cuando se invoca. Para agregar un método adicional a la lista de métodos del delegado (lista de invocación), simplemente es necesario agregar dos delegados mediante los operadores de suma o de asignación de suma ('+' o '+=').

Ejemplo: Multidifusión Junto con el método estático Product, ahora tenemos tres métodos que la instancia de PerformCalculation puede contener. public class MethodClass { public int Sum(int x, int y) { } public int Duplicate(int x, int y) { } } MethodClass obj = new MethodClass(); PerformCalculation d1 = obj.Sum; PerformCalculation d2 = obj.Duplicate; PerformCalculation d3 = Product; //Both types of assignment are valid. PerformCalculation allMethodsDelegate = d1 + d2; allMethodsDelegate += d3;

Delegados – Métodos Anónimos En versiones de C# anteriores a la versión 2.0, la única manera de declarar un delegado era utilizar métodos con nombre. C# 2.0 presenta los métodos anónimos. Es una forma de pasar un bloque de código como parámetro de delegado. Por ejemplo: // Create a handler for a click event button1.Click += delegate(System.Object o, System.EventArgs e) { System.Windows.Forms.MessageBox.Show("Click!"); }; O bien, // Create a delegate instance delegate void Del(int x); // Instantiate the delegate using an anonymous method Del d = delegate(int k) { /* ... */ };

Ejemplo // Declare a delegate delegate void Del(int i, double j); class MathClass { static void Main() MathClass m = new MathClass(); // Delegate instantiation using "MultiplyNumbers" Del d = m.MultiplyNumbers; // Invoke the delegate object. System.Console.WriteLine("Invoking the delegate using 'MultiplyNumbers':"); for (int i = 1; i <= 5; i++) d(i, 2); } // Declare the associated method. void MultiplyNumbers(int m, double n) System.Console.Write(m * n + " ");

Ejemplo - Resultado Invocando el Delegate usando 'MultiplyNumbers': 2 4 6 8 10

Eventos Los eventos proporcionan un medio de que una clase u objeto informe a otras clases u objetos cuando sucede algo relevante. La clase que envía (o produce) el evento recibe el nombre de editor o publicador y las clases que reciben (o controlan) el evento se denominan suscriptores.

Eventos Principales propiedades: El editor determina cuándo se produce un evento. Los suscriptores determinan qué operación se realiza en respuesta al evento. Un evento puede tener varios suscriptores. Un suscriptor puede controlar varios eventos de varios editores. No se llama nunca a los eventos que no tienen suscriptores. En la biblioteca de clases .NET Framework, los eventos se basan en el delegado EventHandler y en la clase base EventArgs. public delegate void EventHandler(object sender, EventArgs e); public event ChangedEventHandler Changed; if (Changed != null) Changed(this, e); También podemos crear eventos con nuestros propios delegados

Suscribir y cancelar la suscripción a eventos ¿Cuando nos suscribimos a un evento? Cuando se desea escribir código personalizado al que se llama cuando se produce ese evento. Ej: puede suscribirse al evento "click" de un botón para que la aplicación realice alguna operación cuando el usuario haga clic en el botón.

Suscripción a eventos Con Visual Studio Si la ventana Propiedades no está visible, en la vista Diseño, haga clic con el botón secundario del mouse en el formulario o control para el cual desea crear un controlador de eventos y seleccione Propiedades. En la parte superior de la ventana Propiedades, haga clic en el icono Eventos. Haga doble clic en el evento que desea crear (por ejemplo, el evento Load). Visual C# crea un método controlador de eventos vacío y lo agrega al código. También puede agregar manualmente el código en la vista Código. Por ejemplo, las líneas siguientes de código declaran un método controlador de eventos al que se llamará cuando la clase Form genere el evento Load. private void Form1_Load(object sender, System.EventArgs e) { // Add your form load event handling code here. } La línea de código necesaria para suscribirse al evento también se genera automáticamente en el método InitializeComponent en el archivo Form1.Designer.cs del proyecto. this.Load += new System.EventHandler(this.Form1_Load);

Suscripción a eventos Directamente en el código Defina un método controlador de eventos cuya firma coincida con la firma de delegado del evento. Ej: void HandleCustomEvent(object sender, CustomEventArgs a) { // Do something useful here. } Utilice el operador de suma y asignación (+ =) para asociar el controlador de eventos al evento. El objeto publisher tiene un evento RaiseCustomEvent. Observe que la clase de suscriptor necesita una referencia a la clase de editor para suscribirse a sus eventos. publisher.RaiseCustomEvent += this.HandleCustomEvent; La sintaxis anterior es nueva en C# 2.0. En la sintaxis de C# 1.0: publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);

Ejemplo 1er. Ejemplo: El tipo Event será una clase derivada de EventArgs 2do. Ejemplo: El tipo Event será el delegado EventHandler.

1er - Ejemplo Clase derivada de EventArgs. Enviamos datos personalizados con el evento Capturan el evento y ejecutan alguna acción Genera el evento