En este artículo aprenderemos a
§ Usar una clase en una aplicación.
§ Usar las herramientas de Microsoft Visual Studio
.NET para crear la definición de una
clase
Uso la clase CHospital en
una aplicación
Como se ha dicho anteriormente una clase es una plantilla de un
objeto. Por ejemplo un coche genérico es una clase, mientras que un
coche concreto es un objeto (instancia de la clase).
Para poner los datos
en los campos y propiedades, hay
que crear una instancia de la clase en
la memoria, esta acción se conoce
como instanciación. Cuando se
crea una instancia, se reserva
una sección de memoria para mantener los campos del
objeto. Si se crea otra instancia
de la clase, se reserva otra sección de la memoria para sus
campos.
Por ejemplo podemos tener n instancias de la clase coche y cada
una de ellas representará un coche concreto con sus atributos particulares
(propiedades) marca, modelo, color, etc.
Vamos a crear dos instancias de la clase CHospital en el proyecto Hospital, y
se mostrarán los datos de cada hospital, así que tendrán que crearse dos instancias
por separado de la clase
CHospital. En lugar de
crear una interfaz elegante,
se escribirá sólo el suficiente código
para ver si la clase está
trabajando como se esperaba.
Driver de Pruebas
La creación de un pequeño programa para probar
una clase se llama Driver. Es una buena idea probar
la clase un poco con el Driver antes de
agregarla a un programa más amplio. Se utiliza el Driver para
probar la clase sin la interferencia del
resto del código del programa.
Crear una instancia de CHospital
1. En el Explorador de soluciones, hacer doble clic en Form1 para abrirlo en el Windows
Diseñador de formularios. Si Form1 se abre en el editor de código, seleccionar
Ver Diseñador.
Crear un entorno visual similar al mostrado a continuación
2. Agregar el siguiente código para el evento SelectedIndexChanged del combo superior
Private Sub
CboHospitales_SelectedIndexChanged(ByVal sender
As System.Object, ByVal
e As System.EventArgs) Handles
CboHospitales.SelectedIndexChanged
Dim
Hospital1_grupo As CHospital
Hospital1_grupo = New CHospital()
End Sub
3. Agregar el código siguiente para establecer las propiedades del hospital inmediatamente después del código
introducido en el paso 2:
Hospital1_grupo.Telefono = "914567894"
Hospital1_grupo.Direccion = "Recoletos 23"
Hospital1_grupo.NumSalas = 28
Cuando se crea
la instancia de CHospital , sus campos contienen los valores especificados en la definición
de clase. Los campos de dirección y teléfono son una cadena vacía, el número de
salas es 0. Tener en cuenta que no hay diferencia en el código del cliente si
se utiliza un campo o una propiedad.
4. Agregar el código siguiente para
crear otra instancia de la clase CHospital.
Dim Hospital2_grupo As CHospital = New
CHospital()
Hospital2_grupo.Telefono
= "912346578".
Hospital2_grupo.Direccion = "Bravo Murillo 324"
Hospital2_grupo.NumSalas = 12
En este caso, se utiliza una sintaxis diferente para declarar e
inicializar una variable de la Clase CHospital. Visual Basic permite la declaración y la inicialización en
la misma declaración. La declaración e iniciación en la misma sentencia tiene las siguientes
ventajas:
§ Los programadores tienen
menos probabilidades de olvidarse de inicializar la variable.
§ Cuando una clase define un
constructor con parámetros, los campos se pueden
inicializar al mismo tiempo.
Usar una instancia de la Clase CHospital
5. Agregar el
código siguiente para mostrar algunos de los textos de los dos libros.
Dim Informe As
String
Informe = "Hospital de "
& Hospital1_grupo.Direccion & "Con
Telefono" & Hospital1_grupo.Telefono & "Tiene" & Hospital1_grupo.NumSalas
& "Salas"
MessageBox.Show(Informe)
Informe = "Hospital de "
& Hospital2_grupo.Direccion & "Con
Telefono" & Hospital2_grupo.Telefono & "Tiene" & Hospital2_grupo.NumSalas
& "Salas"
MessageBox.Show(Informe)
En este fragmento de código se puede ver que hay dos instancias
independientes de la clase CHospital. Es posible hacer referencia a estas instancias utilizando las
variables Hospital1_grupo y Hospital2_grupo. El concepto orientado a objetos permite que cada instancia pueda
ser referenciada por separado y se conoce como identidad. Esto no significa que
haya que crear una variable para cada instancia. La creación de tantas
variables es difícil de manejar si se necesitan cientos de instancias de una
clase. Identidad significa que se puede hacer referencia a cada instancia por
separado cuando sea necesario.
Al crear una instancia CHospital, los
campos de Hospital1_grupo han cambiado y se ha llamado al método AltaMedicoHos.
Más tarde se ha recuperado el valor de la propiedad Direccion.
El valor de la dirección se ha mantenido sin cambios después de llamar al
método AltaMedicoHos. El hecho de que el valor se mantuviera sin
cambios demuestra el concepto de estado de los objetos, la idea de que los
campos conservan su valores entre
llamadas a métodos.
Se puede comparar la forma
en como funciona el método AltaMedicoHos, un método tiene las
declaraciones de las variables. Después de que el método AltaMedicoHos termina, las variables salen de ámbito y se pierden sus valores.
6. Presionamos F5 para ejecutar el código. Al hacer clic en el botón Mostrar
página. Los resultados se muestran aquí:
Al hacer clic en Aceptar y, a los títulos de los libros se muestran en un
cuadro de mensaje, como se muestra aquí:
Hacer clic en Aceptar y, a continuación, cerrar la aplicación.
Hemos creado una clase, CHospital, y dos
instancias de la misma.
Cómo usar el visor de Clases
El entorno de programación permite obtener una vista del árbol de la estructura de clases del proyecto, los espacios de nombres y clases. La Vista de clases puede compartir la misma ventana que el Explorador de soluciones. En el menú Ver, hacer clic en Vista de clases
para abrir la Vista
de clases. La Vista de clases ampliado se muestra a continuación.
El nodo de más alto nivel representa el proyecto, Hospital. El siguiente
nivel de nodos representa los espacios de nombres
en el proyecto. Un proyecto puede
contener varios espacios de
nombres, en este caso, sólo hay
uno. El espacio de nombres del
proyecto consta de tres clases:
la clase que hemos creado, CHospital, otra que crearemos posteriormente CPersona y la clase para el formulario
Windows Forms, frmPrincipal. La clase CHospital contiene cuatro campos
privados, representados por bloques de color azul con un
candado. La clase también contiene
las cuatro respectivas propiedades. Representadas por una
mano sosteniendo un formulario. Además, la clase contiene un método, AltaMedicoHos con dos parámetros objeto que
devuelven un booleano. El método está
representado por un bloque de color púrpura.
Todas las clases en Visual Basic son implícitamente un objeto
de una clase base
Añadir el método UbicarPaciente a la clase CHospital
1. Añadir el siguiente código a la clase CHospital:
Esto crea un
array de códigos de Sala para el hospital y su propiedad para acceder a él.
Private m_salas() As String
Public Property
Sala(ByVal i As
Integer) As Integer
Get
Return
m_salas(i)
End Get
Set(ByVal value As Integer)
m_salas(i) = value
End Set
End Property
Public Function
UbicarPaciente(ByVal Nom_Paciente As CPersona, ByVal
Cod_Sala As CHospital, ByVal
i As Integer) As Boolean
Dim Reg
As RDO.rdoResultset
Dim
strSQL As String
Reg = Nothing
On
Error GoTo
Errores_UbicarPaciente
strSQL = "INSERT INTO
dbo.tbPacSal (strId_PAC,strID_SAL) VALUES (" &
Nom_Paciente.Codigo & ","
& Cod_Sala.Sala(i) & ")"
glbBaseDatos.Execute(strSQL)
Reg.Close()
Return True
Errores_UbicarPaciente:
Return False
End Function
Crear el programa Hospital
Ahora es el momento de
escribir el código y probar la
aplicación completa.
Conectar a la base de datos el combo box para mostrar el campo strNombre
de TbHospital
Resumen
Para
Crear una instancia de una clase
Inicializar la variable usando la palabra new
Dim Hospital1 as New CHospital()
Establecer una propiedad de la instancia
Dim Hospital1 as New CHospital()
Hospital1.Salas
= 25
Llamar a un método de la clase.
Dim Hospital1 as New CHospital()
Dim Num_Sala As String
Num_Sala = Hospital1.Sala(3)