Este artículo
es la continuación de la implementación de un Primer Programa Orientado a Objetos. Aquí veremos cómo
crear métodos de la clase, cómo sobrecargarlos
y cómo rellenar un ListBox utilizando el objeto ArrayList de .NET. También veremos como
agregar un control a un formulario en
tiempo de ejecución. Finalmente utilizaremos los métodos para arrastrar y soltar objetos dentro de un
formulario.
Consideraciones en el diseño de clases reutilizables
La idea de la POO es hacer que
nuestro código pueda ser reutilizable o incluso exportable a otros programas a
través del conocido Copiar y Pegar,
para hacer esto posible hay que tener en cuenta algunos conceptos importantes:
Abstracción
Cuando se crea una clase, existe la
tentación de agregar una gran cantidad de funciones de apoyo, no obstante hay que tener en cuenta que cada
método, propiedad o evento que se añada a la clase va a limitar las opciones de
reutilización de la clase. También es necesario saber que una clase debe hacer
una cosa bien. Si utilizamos una abstracción clara, será más fácil para los
desarrolladores, pues sus métodos y propiedades tendrán sentido y su
comportamiento será más predecible.
Contención
Una clase es una especie de caja negra donde se almacena un tipo
de objeto con datos diversos y los métodos que trabajan con ellos, por ejemplo La clase CHospital puede
almacenar Nombres, direcciones, Números de habitación, Historias clínicas o
cualquier otra cosa. Por lo tanto, hay que tener cuidado de no hacer ninguna suposición sobre el contexto de la clase. A pesar de que se va a desarrollar una clase en un
contexto de una aplicación de Windows, la clase no debe contener ninguna referencia a
un formulario.
Es posible que se desee añadir un comportamiento que dependa del código de
cliente. Se podría añadir un
método que tome un argumento para especificar una forma de tratar la infoirmación. En
este caso es mejor agregar un método que cree un objeto específico
de .NET
De tal
forma que sea utilizable a través de una
serie de códigos de cliente más amplia.
Por ejemplo, si se desea agregar código que muestre un dibujo de un hospital para cada hospital
agregado. Se puede añadir un método que cree
un objeto de .NET Graphics. Esto nos va permitir escribir código para dibujar el hospital
en cualquier objeto que contenga un
objeto Graphics de .NET.
Código Cliente
Si la clase está bien diseñada, el código de cliente se
simplificará mucho, las estructuras de decisión y los bucles estarán contenidos
en los métodos de la clase, de este modo no aparecerán en el código de cliente
que se limitará a llamadas a los métodos de las clases.
Interfaz
Hay que proporcionar una interfaz completa, pero sin exajerar. Implementar el interfaz
lo suficientemente bien como para que un
posterior desarrollador pueda extenderla. Por ejemplo, la clase
CHospital tiene un
método para dar de alta a un Médico en un hospital y otro para Ubicar un
paciente en una sala, pero posteriormente se puede seguir completando,
añadiéndo metodos por ejemplo para asignar una especialidad a un médico o un
paciente a un médico.
A continuación continuamos añadiendo funcionalidad a la Clase CHospital, en este caso agregaremos un constructor y más métodos.
Crear los constructores
Añadir el siguiente constructor. Los telefonos
estarán contenidos en un objeto Array
Private m_telefonos As New System.Collections.ArrayList()
Public Sub New(ByVal telefonos() As
CHospital)
m_telefonos.AddRange(telefonos)
End Sub
Crear un método privado
Añadir el siguiente
método privado en la clase CPersona para asignar una especialidad a un médico.
Private Function AsignaMedicoEsp(ByVal Nom_Medico As
CPersona, ByVal Especialidad As String) As Boolean
Dim Reg As RDO.rdoResultset
Dim strSQL As String
Reg = Nothing
On Error GoTo
Errores_AsignaMedicoEsp
strSQL = "INSERT INTO
dbo.tbMedEsp (strId_MED,strID_ESP) VALUES (" &
Nom_Medico.Medico & "," &
Especialidad & ")"
glbBaseDatos.Execute(strSQL)
Reg.Close()
Return True
Errores_AsignaMedicoEsp:
Return False
End Function
No hay comentarios:
Publicar un comentario