Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Observer Manual de
Laboratorio (Hands-On Lab)
Personas que lo han encontrado til: 3 de 11 - Valorar este tema
Por Joel Francia H.
Descargar Ejemplo de este artculo.
Contenido
1. Introduccin - Utilizando el patrn Observer con Microsoft Visual Studio 2005
2. Definicin
3. Ejercicio 1 Creacin de una aplicacin simple utilizando los conceptos bsicos del patrn
Observer
4. Creando la aplicacin
5. Creando la interfaz
2. Definicin
Define una depedencia del tipo uno a muchos entre objetos, de tal forma que cuando un objeto
cambia su estado, todos los objetos dependientes son notificados y actualizados automticamente
(Ver Figura 1):
4. Creando la aplicacin
1.
Ejecuta Microsoft Visual Studio 2005 y luego elige crear un nuevo proyecto. Para ello, ve al
men File | New | Project. Luego escoge el tipo de proyecto Visual C# y la
plantilla Windows Application. Nmbralo PatronObserver, y acepta (Ver a Figura 2):
Aade una nueva clase al proyecto. Para hacerlo, ve al Solution Explorer, ubicado en la
parte derecha de la pantalla, y haz clic derecho sobre el nombre del proyecto; luego, en el
men, elige Add | Add New Item. Posteriormente, elige aadir una clase y
nmbrala Interfaces.cs o Interfaces.vb, segn el lenguaje (Ver Figura 3):
5. Creando la interfaz
1.
En la clase creada, especificaremos los dos tipos de interfaces a utilizar para la creacin del
patrn Observer:
2.
Luego, aadiremos dos formularios ms al proyecto. Ve a la ventana Add New Item antes
mencionada y elige la plantilla Windows Form. Nombra los dos
formularios ListaObservador y ColorObservador (Ver Figura 4):
4.
Ve al cdigo del Form1 (doble clic sobre el respectivo formulario) y sitate en la declaracin
de la clase Form1. Para que este formulario acte como un Sujeto que posteriormente d
informacin a sus Observadores, es necesario que implementes la interfaz Sujeto antes
creada. Algo parecido se aplica a los otros dos forms (observadores). Para ello, modifica las
siguiente lneas de cdigo:
Ve al diseo del form principal (Form1). Este contendr un comboBox (cbxColor) que
permitir elegir al usuario un conjunto de colores que luego sern reflejados en los otros
formularios. Inserta el control y ve a su Propiedad Items, luego aade la siguiente lista de
colores (Ver la Figura 5):
8.
9.
Crearemos la clase ColorDelegate que permitir llamar al mtodo del formulario principal
mediante un delegado:
34. Vayamos ahora al diseo del formulario ListObserver. Este contendr un listBox
(listaColores) el cual almacenar el nombre de los colores segn se elijan en el formulario
principal (Ver Figura 6):
Me.observadores.Add(obs)
End Sub
'Mtodo que recorre la coleccin Observadores
'llamando a
Private Sub
EventArgs)
Dim
For
num As Integer
num = 0 To Me.observadores.Count - 1
Dim obs As Observador =
CType(Me.observadores.Item(num), Observador)
obs.enviarNotificacion(cbxColor.Text)
Next num
End Sub
91. Vayamos ahora al diseo del formulario ListObserver. Este contendr un listBox
(listaColores) el cual almacenar el nombre de los colores segn se elijan en el formulario
principal (Ver Figura 6):
108.
109. //Aade al listBox el color enviado por el sujeto y satisface a la
interfaz Observervador
110. public void enviarNotificacion(string mensaje)
111. {
112.
listaColores.Items.Add(mensaje);
113. }
114.
115. public ListaObservervador(Sujeto subj)
116. {
117.
InitializeComponent();
118.
registrar(subj);
}
Visual Basic .net
Public Sub New(ByVal subj As Sujeto)
InitializeComponent()
registrar(subj)
End Sub
'Se inscribe al formulario para que sea observador del sujeto al
'cual hemos pasado como
argumento
Public Sub registrar(ByVal sujeto As Sujeto)
sujeto.registrarInteres(Me)
End Sub
'Aade al listBox el color enviado por el sujeto y satisface a 'la
interfaz Observervador
Public Sub enviarNotificacion(ByVal mensaje As String) Implements
Observador.enviarNotificacion
Me.listaColores.Items.Add(mensaje)
End Sub
119.
Por ltimo, modificaremos el cdigo del formulario ColorObservador, el cual
modificar su color de fondo cada vez que se elija un valor dentro del comboBox del form
principal:
120.
Crearemos la clase ColorDelegate que permitir llamar al mtodo del formulario
principal mediante un delegado:
121.
Programa el evento SelectedValueChanged del comboBox cbColores en el
formulario principal de la siguiente manera:
122.
Finalmente, ejecuta el programa. Notars que los formularios ListaObservador y
ColorObservador cambiarn de acuerdo a lo ocurrido en el comboBox del formulario
principal.(Ver Figura 7):
155.
156.
157.
158.
159.
160.
161.
162.
}
Visual C# .net
using System;
using System.Collections.Generic;
using System.Text;
namespace PatronObserver
{
public class ColorDelegate
{
public delegate void ColorDelegado();
public event ColorDelegado eleccionColor;
public object elegirCambioColor
{
set
{
eleccionColor();
}
}
}
Get
Return Nothing
End Get
End Property
End Class
187.
Programa el evento SelectedValueChanged del comboBox cbColores en el
formulario principal de la siguiente manera:
188.
Finalmente, ejecuta el programa. Notars que los formularios ListaObservador y
ColorObservador cambiarn de acuerdo a lo ocurrido en el comboBox del formulario
principal.(Ver Figura 7):
End Sub
202.
Finalmente, ejecuta el programa. Notars que los formularios ListaObservador y
ColorObservador cambiarn de acuerdo a lo ocurrido en el comboBox del formulario
principal.(Ver Figura 7):