Académique Documents
Professionnel Documents
Culture Documents
NET, con
la utilizacin y creacin de clases, de una forma mas o menos, sencilla. Recuerda descargar
Visual Basic .NET y ver el tutorial bsico de Visual Basic .NET antes de empezar.
Primero har una explicacion sobre la POO , y veremos un poco lo bsico. Luego empezaremos a
usar lo aprendido poco a poco.
Todo .NET Framework est basado en clases (u objetos). A diferencia de las versiones anteriores
de Visual Basic, la versin .NET de este lenguaje basa su funcionamiento casi exclusivamente en
las clases contenidas en .NET Framework, adems casi sin ningn tipo de limitacion.
La POO es una evolucin de la programacin por procedimientos llamada tambin estructurada.
Se basaba en funciones y procedimientos y el cdigo que controlaba el flujo de las llamadas a
estos. En Visual Basic, sobre todo en versiones anteriores se sigue programando mucho as. A
veces por desconocimiento y otras por "miedo" no se da el salto a la POO, aunque un
programador con experiencia en VB puede hacer magnficas aplicaciones sin utilizar la POO (y
sin aprovecharse de sus ventajas) , y sobre todo, en un tiempo relativamente reducido.
Herencia
Encapsulacin
Polimorfismo
Nota: Algunos autores aaden un cuarto requisito: la abstraccin, pero este ltimo est estrechamente
ligado con la encapsulacin.
Herencia
Esta es la caracterstica ms importante de la POO. Segn la propia documentacin de Visual
Studio
.NET:
"La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede
simplificar el diseo de la aplicacin proporcionando una estructura de relaciones entre las
distintas clases. Tambin admite la reutilizacin de cdigo porque slo se debe codificar el
comportamiento de clases nuevas o distintas.".
Una relacin de herencia es una relacin en la que un tipo (el tipo derivado) se deriva de otro (el
tipo base), de tal forma que el espacio de declaracin del tipo derivado contiene implcitamente
todos los miembros de tipo no constructor del tipo base.
"La herencia es la capacidad de una clase de obtener la interfaz y comportamiento de una clase
existente."
Resumiendo: Gracias a la herencia podemos ampliar cualquier clase existente, adems de
aprovecharnos de todo lo que esa clase haga.
Encapsulacin
Segn
Visual
Studio.NET:
"La encapsulacin es la capacidad de contener y controlar el acceso a un grupo de elementos
asociados. Las clases proporcionan una de las formas ms comunes de encapsular elementos."
Cuando usamos las clases, stas tienen una serie de caractersticas (los datos que manipula) as
como una serie de comportamientos (las acciones a realizar con esos datos). La encapsulacin
es esa capacidad de la clase de ocultarnos sus interioridades para que slo veamos lo que
tenemos que ver, sin tener que preocuparnos de cmo est codificada para que haga lo que
hace... simplemente nos debe importar que lo hace.
Resumiendo: Establece la separacin entre la interfaz del objeto y su implementacin.
Polimorfismo
Segn
la
documentacin
de
Visual
Studio.NET:
"El polimorfismo se refiere a la posibilidad de definir mltiples clases con funcionalidad diferente,
pero con mtodos o propiedades denominados de forma idntica, que pueden utilizarse de
manera intercambiable mediante cdigo cliente en tiempo de ejecucin."
Dicho de otra manera, puede tener mltiples clases que se pueden utilizar de forma
intercambiable, si bien cada clase implementa las mismas propiedades o los mismos mtodos de
maneras diferentes. El polimorfismo es importante en la programacin orientada a objetos puesto
que permite usar elementos que tienen el mismo nombre, independientemente del tipo de objeto
que se est utilizando en ese momento.
Resumiendo: Determina que el mismo nombre de mtodo realizar diferentes acciones segn
el objeto sobre el que se ha aplicado.
Qu es una clase?
Los programas de Visual Basic se generan con objetos como formularios y controles. Los objetos
tambin se pueden utilizar para representar cosas reales como personas, equipos informticos o
incluso algo ms abstracto, como una cuenta bancaria.
Una clase es simplemente una representacin de un tipo de objeto. Pensad en ella como un
plano que describe el objeto. As como un plano puede utilizarse para construir varios edificios,
una clase podemos usarla para crear varias copias de un objeto.
Aunque puede que no os hayis dado cuenta, ya hemos utilizado las clases en otros tutoriales de
VB que hay por Cristalab, como por ejemplo,en el tutorial bsico de Visual Basic .NET o al crear
aplicaciones con .NET y las seguiremos viendo en los prximos Tips o Tutoriales que vengan.
Por ejemplo, el control TextBox lo define una clase TextBox, que define su aspecto y sus
funciones. Cada vez que arrastramos un control TextBox a un formulario, realmente est creando
una nueva instancia de la clase TextBox.
Cada control TextBox es una copia exacta, aunque distinta, de la clase que lo define, la clase
TextBox. Puesto que cada objeto es una "instancia" independiente de una clase, la accin de
crear una clase se denomina creacin de instancias.
Hasta ahora hemos agregado los controles TextBox a su formulario arrastrndolos desde el
Cuadro de herramientas, pero tambin puede crear instancias de un objeto TextBox en su cdigo
si utiliza la palabra clave New.
End Class
Crear clases
Si habis seguido los tutos de Visual Basic de Cristalab, o sabis de ello, sabris que al hacer
doble clic en un formulario y abrir el Editor de cdigo se vea algo parecido a lo siguiente:
Public Class Form1
Private Sub Form1_Load...
End Sub
End Class
Pues mirad, el formulario realmente es una clase, marcada por instrucciones Class y End Class
y cualquier cdigo que se haya escrito entre las dos instrucciones es parte de la clase. Aunque de
manera predeterminada un mdulo de formulario contiene slo una clase nica, puede crear
mdulos adicionales agregando cdigo debajo de la instruccin End Class, tal como se ilustra a
continuacin:
Public Class Form1
' El cdigo de vuestro Form AQUI
End Class
Public Class MyFirstClass
Mdulos de clase
Un mdulo de clase es un archivo de cdigo, separado del resto, que contiene una o ms
clases. Como es un archivo independiente, se puede reutilizar en otros proyectos.
Los mdulos de clase se pueden crear de dos maneras:
Como campo.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
End Get
12.
13.
firstNameValue = value
14.
End Set
15.
End Property
16.
17.
18.
19.
20.
End Get
21.
22.
middleNameValue = value
23.
End Set
24.
End Property
25.
26.
27.
28.
29.
End Get
30.
31.
32.
lastNameValue = value
End Set
End Property
Quedar as:
33.
contrasea. Podemos utilizar ese valor para realizar acciones dentro de la clase, pero desear
que sigan siendo privadas.
Para crear una propiedad de slo escritura, se crear una propiedad con un procedimiento Set
pero sin procedimiento Get, como a continuacin:
Private passwordValue As String
WriteOnly Property Password() As String
Set(ByVal value As String)
passwordValue = value
End Set
End Property
Los procedimientos de propiedad ReadOnly y WriteOnly tambin son tiles cuando deseamos
tomar un valor de propiedad y convertirlo en un valor diferente. Por ejemplo, pensemos en la edad
de una persona. A diferencia del nombre, la edad cambia con el tiempo, si ha asignado la edad a
una clase y la lee de nuevo un ao despus, sera incorrecta.
En la clase Persons, podemos evitarlo agregando dos propiedades: una propiedad "WriteOnly
BirthYear" que representa el ao de nacimiento, que nunca cambia, y una propiedad "ReadOnly
Age" que devuelve un valor calculando la diferencia entre el ao en curso y el ao de nacimiento.
Siguiendo con la Clase Persons, ahora agregaremos propiedades ReadOnly y WriteOnly a la
clase:
1.
parte
2.
3.
4.
5.
birthYearValue = value
6.
End Set
7.
End Property
8.
9.
10.
11.
12.
Get
Age = My.Computer.Clock.LocalTime.Year - birthYearValue
End Get
End Property
13.
Por ejemplo, una clase Account puede tener un procedimiento Sub denominado Recaculate, que
actualizar el balance o un procedimiento Function denominado CurrentBalance para devolver el
ltimo balance.
El cdigo para declarar esos mtodos puede ser similar al siguiente:
Public Sub Recalculate()
'Aqui el codigo para recalcular Account.
End Sub
Public Function CurrentBalance(ByVal AccountNumber As Integer) As Double
'Codigo para volver a Balance
End Function
Si bien la mayora de los mtodos de clase son pblicos, tambin se pueden agregar mtodos
que slo la clase en s puede utilizar. Por ejemplo, la clase Persons puede tener su propia funcin
para calcular la edad de una persona. Si declara la funcin como Private, no se puede ver o
llamar desde fuera de la clase.
El cdigo para una funcin privada puede ser similar a ste otro:
Private Function CalcAge(ByVal year As Integer) As Integer
CalcAge = My.Computer.Clock.LocalTime.Year - year
End Function
Ms tarde podremos cambiar el cdigo que calcula el valor CalcAge y el mtodo seguir
funcionando bien sin cambiar ningn cdigo que utilice el mtodo. Ocultar el cdigo que realiza
el mtodo, se conoce como la "encapsulacin", ya explicada al comienzo.
Ahora, para agregar un mtodo a la clase Persons, hacemos lo siguiente:
Agregamos
el
siguiente
cdigo
bajo
los
procedimientos
de
propiedad.
& lastNameValue
Else
FullName = firstNameValue & " " & lastNameValue
End If
End Function
Get
Age = CalcAge(birthYearValue)
End Get
End Property
Antes,
el
cdigo
era
as:
Provocar un evento significa que estamos sealizando la aparicin del evento. Para agregar un
evento a una clase, lo declaramos con la instruccin Event. sto indica que el objeto puede
provocar el evento que especificamos.
Por ejemplo, quizs deseemos agregar un evento AgeCalculated a la clase Persons que hicimos.
Podemos provocar a continuacin el evento en el mtodo CalcAge. Despus de hacer esto,
cuando se llama al mtodo, podemos ejecutar algn cdigo adicional en cuanto se haya calculado
la edad de la persona.
el
siguiente
cdigo
encima
de
los
procedimientos
de
propiedad.
RaiseEvent AgeCalculated(Age)
End Function
Hacemos doble clic en el formulario para abrir el editor de cdigo y escribimos la siguiente
declaracin
justo
debajo
de
la
lnea
Public
Class
Form1.
Hacemos doble clic en el primer botn (Update) para abrir el Editor de cdigo y en el
controlador
de
eventos
Button1_Click,
agregamos
el
siguiente
cdigo:
With person1
.FirstName = Textbox1.Text
.MiddleName = Textbox2.Text
.LastName = Textbox3.Text
.BirthYear = Textbox4.Text
.Married = CheckBox1.Checked
End With
En
MsgBox(person1.FullName)
el
controlador
de
eventos
Button2_Click,
agregamos
lo
siguiente:
End If
-En
el
primer
cuadro
de
texto,
escribimos
nuestro
nombre.
-En
el
segundo
cuadro
de
texto,
escribimos
nuestro
segundo
nombre.
-En
el
tercer
cuadro
de
texto,
escribimos
nuestro
apellido.
-En el cuarto cuadro de texto, escribimos el ao de nuestro nacimiento con cuatro dgitos (por
ejemplo,
1983).
-Activamos la casilla de si estamos casados/as.
Hacemos clic en el botn "Update" para establecer las propiedades de la clase y clic en el
botn
"Full
Name".
Se muestran tres cuadros de mensaje. Estos cuadros de mensaje muestran su nombre completo,
edad y estado civil.
Mtodos sobrecargados
Para crear un mtodo sobrecargado, agregamos dos o ms procedimientos Sub o Function a la
clase, cada uno con el mismo nombre.
En las declaraciones de procedimiento, el conjunto de argumentos para cada procedimiento
debe ser distinto o se producir un error.
El siguiente ejemplo muestra un mtodo con dos sobrecargas, una que acepta una String y la otra
que acepta un Integer como argumentos.
Agregamos
el
siguiente
cdigo
debajo
de
los
mtodos
existentes.
MiddleInitial = Left$(middleNameValue, 1)
End Function
End Function
Hacemos doble clic en el primer botn (With) para abrir el Editor de cdigo y escribimos el
siguiente
cdigo
en
el
controlador
de
eventos
Button3_Click.
En
el
controlador
de
eventos
Button4_Click,
agregamos
el
siguiente
cdigo.
-En
el
primer
cuadro
de
texto,
escribimos
nuestro
nombre.
-En
el
segundo
cuadro
de
texto,
escribimos
nuestro
segundo
apellido.
-En
el
tercer
cuadro
de
texto,
escribimos
nuestro
tercer
apellido.
-En el cuarto cuadro de texto, escribimos el ao de nuestro nacimiento con cuatro dgitos (por
ejemplo,
1983).
-Activamos la casilla si est casado/a.
Hacemos clic en el botn Actualizar para establecer las propiedades de la clase y hacemos
clic
en
el
botn
With.
Se abrir un cuadro de mensaje. Muestra nuestro nombre con un punto tras la inicial del primer
apellido.
Hacemos
clic
en
el
botn
Without.
Se abrir un cuadro de mensaje. Muestra nuestro nombre sin el punto tras la inicial del primer
apellido.
en
End Sub
Presionamos
F5
para
ejecutar
el
proyecto
y
mostrar
el
formulario.
-En
el
primer
cuadro
de
texto,
escribimos
nuestro
nombre.
-En
el
segundo
cuadro
de
texto,
escribimos
nuestro
segundo
apellido.
-En
el
tercer
cuadro
de
texto,
escribimos
nuestro
tercer
apellido.
-En el cuarto cuadro de texto, escribimos el ao de nuestro nacimiento con cuatro dgitos (por
ejemplo,
1983).
-Activamos la casilla si est casado/a.
en
Hacemos clic en el botn Actualizar para establecer las propiedades de la clase y haga clic
el
botn
Full
Name.
Si se cre un objeto para representar un automvil, se pueden incluir propiedades y mtodos para
todos los atributos y comportamientos comunes, pero no se podran agregar atributos como la
cubierta de un descapotable, puesto que dicho atributo no es generalizable a todos los
automviles.
Mediante el uso de la herencia, se puede crear una clase "descapotable" que deriva de la clase
"automvil". sta hereda todos los atributos de la clase automvil y puede agregar los atributos y
comportamientos que son nicos de un auto descapotable.
Inherits Persons
Agregamos tambin el siguiente cdigo para definir las dos nuevas propiedades.
Get
Number = numberValue
End Get
numberValue = value
End Set
End Property
Get
Position = positionValue
End Get
positionValue = value
End Set
End Property
4.
5.
6.
7.
8.
9.
Hacemos doble clic en el formulario para abrir el Editor de cdigo y escribimos la siguiente
declaracin
justo
debajo
de
la
lnea
Public
Class
Form1.
10.
11.
1.
2.
3.
With player1
4.
.FirstName = "Wyrm"
5.
.LastName = "Garcia"
6.
.Number = 13
7.
.Position = "Shortstop"
8.
End With
9.
With player2
10.
.FirstName = "Joe"
11.
.LastName = "Black"
12.
.Number = 51
13.
.Position = "Catcher"
End With
14.
15.
16.
17.
18.
Hacemos doble clic en el primer botn (At Bat) para abrir el Editor de cdigo y escribimos
siguiente
cdigo
en
el
controlador
de
eventos
Button1_Click.
el
19.
MsgBox(player1.Position & " " & player1.FullName & ", #" & _
Observamos que estamos utilizando el mtodo FullName que se hered de la clase base Persons.
20.
En
el
controlador
de
eventos
Button2_Click,
agregamos
el
siguiente
21.
MsgBox(player2.Position & " " & player2.FullName & ", #" & _
cdigo.
22.
Presionamos F5 para ejecutar el programa. Hacemos clic en cada botn para ver los
resultados.
Clic al Boton1(At Bat):
23.
Espero que las explicaciones hayan estado claras, y que a quien le haya gustado este tema, no
dude en profundizarlo un poco mas, yo solo he levantado la primera capa de todo lo que hay
debajo. Suerte!!
PD: El archivo del tutorial contiene todo lo que hemos ido haciendo desde el principio del tutorial,
para ver los tres ejemplos, debereis hacer Clic en "Establecer como proyecto de inicio", como ya
hicimos durante el tuto.
En este sencillo tutorial, vamos a hacer que se muestre un cuadro de dilogo mostrndonos el
nombre que previamente hemos escrito en el cuadro de texto.
Lo primero que vamos a hacer es cargar el entorno de desarrollo del Visual Studio .NET, as que
vamos a Inicio - Programas - Microsoft Visual Basic 2008... y lo ejecutamos. En la pantalla de
inicio volvemos a seleccionar "Aplicacin de Windows Forms", como se ve en la imagen.
Para que veais todo cargado, la pantalla con todo el IDE activo ser esta:
Para nuestro ejemplo, aadiremos un botn (Button) y lo situaremos debajo del cuadro de texto
(Textbox). Luego aadimos una etiqueta (Label) para que quede de esta forma:
Como vemos, por defecto, el IDE pone unos nombres genricos a los controles, como label1,
textbox1, button1, es decir utiliza el tipo de control y lo va numerando tantas veces como
controles iguales tengamos en el formulario(label1, label2, label3,...). Es por ponerle un nombre
inicial, ya que siempre los controles deben tener un nombre nico.
Ahora vamos a cambiar el texto que contiene el botn "Button1". Para cambiarle este texto hay
que utilizar la ventana de propiedades (A la derecha-abajo), en esta ocasin el elemento que nos
interesa de esa ventana de propiedades es Text, escribimos en esta propiedad la palabra
"Mostrar" y cuando pulses Intro o el tabulador veremos que el texto del botn se ha actualizado.
Hacemos lo mismo con la etiqueta "Label", recuerdamos que hay que seleccionarla primero
haciendo clic para que se muestren las propiedades de la etiqueta. Escribimos "Nombre:" en Text
y pulsamos intro o el tabulador.
Fjate que en la parte superior de la ventana pone el control que estamos editando y de que tipo
es.
Escribir el cdigo
Ahora vamos a escribir el cdigo que se ejecutar cada vez que se haga clic en el botn que
hemos aadido. Para ello, selecciona el botn "Mostrar" y hacemos doble clic en l, se mostrar
una nueva ventana, en este caso la ventana de cdigo del botn, asociada con el formulario que
tenemos en nuestro proyecto. Nos mostrar:
Hay otra forma de acceder a los eventos de los controles y es esta. Vete a la vista del cdigo del
formulario pulsando en el botn de codigo, que muestro en la imagen siguiente:
Llegaremos otra vez a la ventana del cdigo de antes, haz clic en el desplegable de arriba a la
izquierda y vers la siguiente imagen
Que son los objetos que hemos aadido en nuestro formulario. Selecciona "Button1" y fjate ahora
en el desplegable de la derecha y selecciona Click.
Esta pantalla nos est indicando en la parte superior, que estamos trabajando con "Form1.vb".
Debajo nos indica (a la izquierda) que estamos con el control llamado "Button1" y a la derecha
que estamos trabajando con el evento click.
Escribimos el siguiente cdigo en el hueco dejado por Visual Basic entre las lneas que hay entre
Private Sub... y End Sub
Pulsamos F5 para que se ejecute el cdigo que hemos escrito o pulsa en el botn "play" que est
en la barra de botones.
Cuando se presente el formulario escribe algo en el cuadro de texto, pulsa en el botn Mostrar y
veremos que se muestra un cuadro de dilogo dicindote Hola y a continuacin lo que hayas
escrito en el cuadro de texto (TextBox):
Ya tenemos nuestra aplicacin "Windows forms" funcionando, creada con Visual Basic .NET. Pero
no queda la cosa ahi, y por ltimo vamos a aadirle un boton, para cerrarlo. Ahora cambiaremos
las dos propiedades: Name para ponerle cmdCerrar, y Text para ponerle Cerrar.
Obviamente al ponerle esta vez un nombre al control, en lugar de llamarse Button2 se llamar
como le hemos indicado cmdCerrar y as lo veremos en el cdigo. Pulsamos doble clic en l para
escribir el cdigo que queremos que ejecute: