lunes, 26 de diciembre de 2011

Eventos - Tutorial 1


Hola a todos, bueno voy a presentarme ya que es mi primer tutorial sobre un tema que me dio más de un dolor de cabeza a la hora que inicie con la programación en C#. Mi nombre es Luis Alberto Salvarezza, soy Ingeniero en Sistema de Información, actualmente la lucho como independiente, y lo primero que quiero compartir con ustedes es que no los asuste la cantidad de cosas que hay, no se desanimen estudien, practiquen y las cosas van a ir saliendo, yo sinceramente no soy un experto en la programación, pero puedo decir que es algo que me gusta mucho y que me gustaría compartir lo poco que se pensando que puede ser de utilidad para alguna persona.

Bueno antes de arrancar le voy a dedicar mi primera publicación a dos grandes personas, que son mi ejemplo a seguir "Vieja" y "Viejo" con todo el amor para ustedes. Y toda la Familia tb. A Carmela podríamos decir que aunque no estoy casado, es como que sí, es la persona que amo y con la que pretendo formar una familia, mi hermanita que ya la voy a felicitar por su titulo de psicología, a mis abuelos Estrella, Alfredito y mi querida abuela Neri que está en mi corazón. 

Sepan disculparme, ahora si, antes de entender lo que es un evento necesitamos comprender lo que es un delegado, este amigo lo vamos a encontrar muy seguido, ¿que es entonces un delegado?, tranquilos ya vamos a eso;

La ayuda de Microsoft nos dice: 
 
Un delegado es un tipo que define una firma de método. Al crear instancias de un delegado, puede asociar su instancia con cualquier método mediante una firma compatible. Puede invocar (o llamar) al método a través de la instancia de delegado. Los delegados se utilizan para pasar métodos como argumentos a otros métodos. Los controladores de eventos no son más que métodos que se invocan a través de delegados. 

Puntos fundamentales para extraer de esa definición:
  • Define una firma del método.
  • Los delegados se utilizan para pasar métodos como argumentos a otros métodos.
Digamos que hasta acá ya podemos decir que para crear o definir un evento, primero hay que definir el delegado y luego definir el evento que va a ser del tipo de ese delegado, vamos con un ejemplo para ir aclarando el panorama, pido disculpas de mis ejemplos muchas veces escribo código y nos respeto ninguna nomenclatura, aclarado esto pongo el ejemplo:

1) public delegate void MiSeleccion(Object Entidad); 

2) public event MiSeleccion MiEntidadSeleccionada;

3) public virtual void OnMiEntidadSeleccionada(Object entidad)
{
   if (MiEntidadSeleccionada != null)
   {
       MiEntidadSeleccionada(entidad);
   }
}

Si miramos el código lo separo en 3 puntos:

1) Ahi defino un delegado, void es que no devuelve nada y el parámetro es de tipo Object porque es genérico y se adapta a muchos casos, según los grandes conocedores de la teoría orientada a objetos de la cual no me voy a poner hablar pero capaz en algún capitulo siguiente podría ser es que mientras mas genérico sea el parámetro mejor, después vamos a ver casos más avanzados.

2) Ahí ven que uso la palabrita mágica “event”, y es porque amigos estamos definiendo un evento, y ven que el  lo que le sigue a la palabrita esta es el delegado que definimos anteriormente, es medio difícil de entender pero con mis palabras espero esto no lo lea alguien que domine la teoría porque me va a querer boxear jajaja, el tipo del evento es el delegado, en realidad no es así es como se dijo arriba pero para que se entienda, primero el delegado y al evento lo definen del tipo del delegado ahí les gusta más?

Con esos 2 pasos estamos 8 puntos digamos que promocionan bien, pero vamos por 2 puntitos mas y no los jodo mas por hoy. Un esfuerzo mas no quiero cargarlo de contenido pero quiero que entiendan bien la teoría así de a poquito vamos aumentando el nivel de dificultad, mi compromiso es armarle código funcional de ejemplo para que practiquen, así que lean que sirve.

3) El tercer paso no es nada mas que el disparador, y que es un disparado bueno gente media pila es lo que lanza la acción, si ustedes hacen el famoso click sobre un botón al hacer ese click lo que en realidad hacen es disparar el evento.

Si no quedo del todo claro, no se preocupen lean de nuevo y en la próxima publicación que seguro será en unos días seguiremos avanzando con este hermoso tema.

Un abrazo y feliz año.


Access