Sunteți pe pagina 1din 13

Unidad 14.

Clases en VB
14.1. Objetivos del tema.
Se han explicado los conceptos imprescindibles de una clase, mtodos y
propiedades, ahora tenemos que aplicarlos en este caso en VB.
14.2. Introduccin.
Las clases son el molde a partir del cual obtenemos el objeto en nuestro programa,
y el objeto es en realidad el que tiene el protagonismo de la accin, la clase es solo
el molde.
Vamos a ver como aplicar los conceptos vistos con anterioridad en VB.
14.3. Crear la clase.
Lo ideal es tener un mdulo con las o la clase en nuestro proyecto, de forma que
estn agrupadas de forma prctica para nosotros.

Elegimos Archivo
Nuevo proyecto
y seleccionamos
aplicacin de
consola.
Despus Proyecto
Agregar Clase y
seleccionamos el
icono de clase
como vemos en la
imagen.

La podemos dejar
con el nombre que tiene, o cambiarlo, nosotros la llamaremos ejemplo.
Y ahora a utilizarla.

14.4. El objeto.
Primero creemos el objeto.
Nuestra clase ahora es as.

Public Class Ejemplo

End Class

Ahora creamos un objeto de esa clase.

Dim Objeto As Ejemplo

Si ahora escribimos en nuestro programa

Objeto.

Si vemos la imagen, ese es el resultado, son los mtodos estndar de cualquier


objeto.

Pero como no hemos escrito nada nuestro, no


vemos nada.
14.5. Los datos.
Hemos comentado que eran de dos tipos

Internos.
Externos.

Veamos como definir los datos internos en la clase, es decir los que no se ven en el
exterior.

Public Class Ejemplo


Dim DatoInterno As String
Private OtroInterno As Integer
End Class

Si ahora escribimos en nuestro programa

Dim Objeto as Ejemplo


Objeto.

Si vemos la imagen, ese es el resultado, son los mtodos estndar de cualquier


objeto.

Exactamente lo mismo que antes, como los datos son internos no se ven fuera de la
clase.
Ahora externos, o sea, propiedades.

Public Class Ejemplo


Dim DatoInterno As String
Private OtroInterno As Integer
Public DatoExterno As String
End Class
Si ahora escribimos en nuestro programa
Dim Objeto as Ejemplo
Objeto.
Si vemos la imagen, ese es el resultado, son los mtodos estndar de cualquier
objeto, pero ahora aparece nuestra propiedad, el dato externo.

14.6. Inicializar el objeto.


Para poder utilizar el objeto que hemos creado, ste ha de inicializarse, para ello se
utiliza el constructor de la clase.
Para ello existe en Vb el mtodo New, que es el constructor de la clase.

Sub New(ByVal Dato As String) Constructor de la clase


DatoExterno = Dato
End Sub

La misin del constructor no es solo la de asumir los valores que se reciben en el


momento de crear el objeto, si no que tambin se puede hacer en ese momento el
control de los mismos.

Public Sub New(ByVal Dato As String)

If dato <> Then DatoExterno = Dato


End Sub

En el ejemplo se obliga a que el dato recibido sea distinto de nulo para asignarlo a
la variable de la clase.

La declaracin del constructor como public sin argumentos permite la creacin de


objetos sin la utilizacin de datos, esto no siempre puede ser prctico o cmodo.

Si en lugar de declarar el constructor como public lo declaramos como private, se


impide que se generen instancias de un objeto sin que estos tengan los valores que
se reclamen como adecuados en el mtodo.

Private Sub New() impide la creacin de instancias de la clase.


End Sub

En el ejemplo que hemos visto, si declaramos como private el constructor anterior,


la declaracin de un objeto de sta clase obligara a que llevar los dos datos que
se piden en la sobre carga.
Explicado de otra forma, as se impide que un objeto se cree sin pasar por el control
del constructor correspondiente, ya que al declararse como private, ste queda
bloqueado, anulado o como deseemos decirlo, y siempre se ejecuta el declarado
por nosotros como public.
14.7. Creemos un objeto.
El siguiente paso es crear un objeto de esta clase, aunque ya lo hemos hecho, pero
de forma ms avanzada.

Dim Objeto As Ejemplo

Y ahora asignemos algo al dato externo para probarlo.

Sub Main()
Dim Objeto As Ejemplo
Objeto.DatoExterno = "Contenido de la propiedad"
Console.WriteLine(Objeto.DatoExterno)
Console.ReadKey()
End Sub

No hemos podido utilizarlo, falta un pequeo matiz, hemos definido que el objeto es
del tipo Ejemplo, pero no se ha creado una instancia del mismo, cambiemos la
forma de definir el objeto por la que sigue.

Dim Objeto As New Ejemplo

Probemos ahora, y ahora si que funciona, y este sera el resultado.

Contenido de la propiedad

14.8. Cmo gestionar las propiedades, los datos.


Disponemos de un dato, una propiedad que el usuario puede utilizar, y a nosotros
nos permite obtener datos para el funcionamiento del objeto.

Podemos gestionar la obtencin de datos de varias formas, podemos:

Obtener datos en la creacin del objeto.


Asignar controladamente los datos.
Asignar sin control previo los datos.

Obtener datos en la creacin del objeto.

Cuando se crea una instancia de un objeto, se ejecuta de forma predeterminada el


mtodo new, tema a parte es que lo hayamos escrito o no.
En ese mtodo nosotros podemos reclamar la inclusin de aquellos datos que
creamos oportunos, y en ese mismo momento validarlos.

Public Class Ejemplo


Dim DatoInterno As String
Private OtroInterno As Integer
Public DatoExterno As String

Sub New(ByVal Dato As String)


DatoExterno = Dato
End Sub
End Class

Si aadimos el mtodo new a la clase, tal como esta en el ejemplo superior, en el


programa habr que hacer el siguiente cambio,

para evitar el error de sintaxis que podemos observar en la imagen, ya que no se ha


introducido el valor que solicitamos en el mtodo new.

Probemos ahora, el cdigo modificado en el programa principal es el que sigue.

Sub Main()
Dim Objeto As New Ejemplo("Contenido de la propiedad.")

Console.WriteLine(Objeto.DatoExterno)
Console.ReadKey()
End Sub

Ahora si que funciona, y este sera el resultado.

Contenido de la propiedad.

Fijmonos en que a la propiedad DatoExterno le hemos asignado el valor obtenido


en el mtodo New.
Adems no se ha realizado ningn control sobre ese dato.
Al mtodo new se le denomina constructor de la clase.
2

Asignar controladamente los datos.

Se trata de utilizar la sintaxis de propiedad en lugar de la de variable pblica.


Al utilizar esta opcin, podemos recoger los datos realizando una validacin de los
mismos antes de asignar el dato a la variable interna nuestra dentro de la clase.

Es decir el dato esta formado por dos componentes:

La propiedad que es la parte visible.


La variable interna de la clase, que est oculta.

La captura de los datos es como sigue:

La propiedad dispone de la sintaxis siguiente:

Property Propiedad() as String


Get

Lectura

Return DatoInterno
End Get
Set(ByVal value as String)

Asignacin

If value <> "" Then DatoInterno = value


End Set
End Property

Podemos observar que dispone de dos partes, una de lectura, Get, y otra de
asignacin, Set.
En la de lectura se devuelve el dato de la variable que internamente la representa.
En la de asignacin, podemos escribir cdigo de control que comprueba que el valor
recibido est dentro de los mrgenes que estn previstos.

Set(ByVal value as String)

Asignacin

If value <> "" Then DatoInterno = value


End Set

Como vemos, en el ejemplo, solo se admite el dato si es distinto de nulo.


De esta forma podemos admitir o no los datos segn nos interese.
Es aconsejable que el valor de la variable est asignado con un valor por defecto en
la creacin de la variable, de esa forma se cubre cualquier posibilidad y siempre
dispondremos de unos valores por defecto.

Dim DatoInterno As String = "Valor por defecto"

Y si la inicializacin del objeto fuera

Dim Objeto As New Ejemplo("")

Al ejecutarse

Console.WriteLine(Objeto.Propiedad)

El resultado sera:

Cambio de contenido

Un ejemplo de su utilizacin sera:

Sub Main()
'

Dim Objeto As New Ejemplo("Contenido de la propiedad")

Dim Objeto As New Ejemplo("")

se rechaza la inicializacin

Console.WriteLine(Objeto.Propiedad)

Objeto.Propiedad = ""

Se rechaza

Console.WriteLine(Objeto.Propiedad)

Objeto.Propiedad = "Cambio de contenido"

Se admite

Console.WriteLine(Objeto.Propiedad)

Console.ReadKey()
End Sub

Podemos seleccionar una de las dos opciones en la inicializacin del objeto:

'

Dim Objeto As New Ejemplo("Contenido de la propiedad")

Dim Objeto As New Ejemplo("")

Despus podemos observar como se asigna un valor nulo a la propiedad, y que ste
se rechaza por no cumplir los requisitos, se visualiza su contenido que no ha sufrido
cambios, y despus se asigna un valor que s es vlido, y que s que se visualiza
correctamente.

El resultado de la ejecucin sera:

Valor por defecto


Valor por defecto
Cambio de contenido

Y la clase completa sera:

Public Class Ejemplo


Dim DatoInterno As String = "Valor por defecto"
Private OtroInterno As Integer
Public DatoExterno As String

Property Propiedad() as String


Get
Return DatoInterno
End Get
Set(ByVal value as String)
If value <> "" Then DatoInterno = value
End Set
End Property

Sub New(ByVal Dato As String)


DatoInterno = Dato
End Sub
End Class
3

Asignar sin control previo los datos.

La asignacin sin control de los datos puede realizarse tanto en la propiedad, como
en la variable.
En la propiedad podemos observar que hemos eliminado el cdigo de validacin, y
que solo queda la asignacin:

Set(ByVal value as String)


DatoInterno = value
End Set

Asignacin

La propiedad quedara pues, de esta forma:

Property Propiedad() as String


Get
Return DatoInterno

Lectura

End Get
Set(ByVal value as String)
DatoInterno = value

Asignacin

End Set
End Property

La otra posibilidad es la de declarar como variable pblica el dato a utilizar y el


usuario puede asignar valores de forma libre.

Public DatoExterno As String

Evidentemente sera adecuado que esa variable fuera inicializada, para de esa
forma evitar o reducir problemas.

Public DatoExterno As String = Valor por defecto

Con ste programa

Sub Main()
Dim Objeto As New Ejemplo("Contenido de la propiedad")

Console.WriteLine(Objeto.DatoExterno)

Objeto.DatoExterno = ""
Console.WriteLine(Objeto.DatoExterno)

Objeto.DatoExterno = "Nuevo valor"


Console.WriteLine(Objeto.DatoExterno)

Console.ReadKey()

End Sub

La ejecucin quedara como sigue:

Valor por defecto

Nuevo valor

La lnea en blanco es la que provoca sta instruccin

Objeto.DatoExterno = ""
Console.WriteLine(Objeto.DatoExterno)

La clase completa de ste ejemplo quedara:

Public Class Ejemplo


Dim DatoInterno As String = "Valor por defecto"
Private OtroInterno As Integer
Public DatoExterno As String = "Valor por defecto"

Property Propiedad() as String


Get
Return DatoInterno

' Lectura

End Get
Set(ByVal value as String)
DatoInterno = value

' Asignacin

End Set
End Property

Sub New(ByVal Dato As String)


If Dato <> "" Then DatoInterno = Dato
End Sub
End Class

14.9. Propiedades solo lectura.


Se trata con sta opcin de disponer solo de la posibilidad de utilizar los valores de
una propiedad pero no permitir su modificacin por parte del usuario de la clase, del
objeto.
Para ello utilizamos la siguiente sintaxis.

ReadOnly Property Propiedad()


Get
Return DatoInterno

' Lectura

End Get
End Property

Podemos comprobar como desaparece la parte de asignacin, Set, y adems si


intentamos escribirla nos dar error de sintaxis.
14.10. Propiedades solo escritura.
Se trata del caso contrario, permitir que solo pueda asignarse datos pero no su
visualizacin, su lectura.

WriteOnly Property Propiedad() as String


Set(ByVal value as String)
DatoInterno = value

' Asignacin

End Set
End Property
14.11. Utilizar los datos, las propiedades.
El uso de la propiedad es como en el resto de casos en los que utilizamos una
variable, con las restricciones expuestas de lectura y escritura, pero no hay
cambios, se pueden usar como una variable ms.
Precauciones a tomar, tener presente que los cambios en una propiedad, afectan al
objeto del cual depende, y si tenemos varios objetos de la misma clase, estar
seguros sobre cual hacemos los cambios, o cual es el que estamos utilizando.
14.12. Clase como estructura de datos.
Es posible crear una clase de la que se deriven objetos que nicamente contienen
datos, informacin y tambin la de crear una estructura vlida con la misma.
14.13. Conclusiones.
Hemos visto el uso de los datos en una clase, propiedades, variables pblicas, sus
condiciones de uso y la forma de controlar los datos.
Lo principal es tener presente que es muy til declarar las variables inicializadas a
valores que sean prcticos para el uso por defecto del objeto.

Pero, adems exigir en el mtodo new, el constructor, la insercin de los datos que
sean necesarios para la inicializacin del objeto.
Ejercicios unidad 14: Clases en VB
1

Crear una clase en la que dispongamos de:

Una variable privada,


Una variable pblica.
Una propiedad y su variable interna.
Una propiedad solo lectura, y su variable interna.
Una propiedad solo asignacin, y su variable interna.

A la clase anterior asignar datos a las variables en su declaracin.

Modificar los contenidos de esas variables a travs de sus propiedades, realizando


un control en funcin del tipo de dato a introducir.
Visualizar los contenidos antes y despus de los cambios.

3
Aadir a la clase anterior el mtodo new, de forma que se pueda cargar los
valores iniciales de las propiedades en el mismo.

S-ar putea să vă placă și