Lectura: POO en Visual Basic .
NET (Parte 1)
Programacin orientada a objetos en Visual Basic .NET
Introduccin a los objetos en Visual Basic
Casi todas las tareas realizadas en Visual Basic estn asociadas con el uso de objetos. Si
no tiene experiencia en programacin orientada a objetos, los siguientes trminos y
conceptos le ayudarn a comenzar.
Clases y objetos
Las palabras "clase" y "objeto" se utilizan con tanta frecuencia en la programacin
orientada a objetos que es fcil confundir los trminos. En general, una clase es una
representacin abstracta de algo, mientras que un objeto es un ejemplo utilizable de lo
que representa la clase. La nica excepcin a esta regla la constituyen los miembros de
clases compartidas, que pueden utilizarse en instancias de una clase y en variables de
objeto declaradas como tipo de la clase.
Campos, propiedades, mtodos y eventos
Las clases se componen de campos, propiedades, mtodos y eventos. Los campos y
propiedades representan informacin que contiene un objeto. Los campos se parecen a
las variables en que se pueden leer y establecer directamente. Por ejemplo, si tiene un
objeto denominado Car podra almacenar su color en un campo denominado Color.
Las propiedades se recuperan y establecen como los campos, pero se implementan
mediante los procedimientos Property Get y Property Set, que proporcionan ms control
sobre la forma en que los valores se establecen o se devuelven. El nivel de
direccionamiento indirecto entre el valor que se va a almacenar y los procedimientos
que lo utilizan ayuda a aislar los datos y permite validar valores antes de ser asignados o
recuperados.
Los mtodos representan acciones que un objeto puede realizar. Por ejemplo, un objeto
Car podra tener los mtodos StartEngine, Drive y Stop. Los mtodos se definen
agregando procedimientos, ya sean rutinas o funciones Sub, a la clase.
Los eventos son notificaciones que un objeto recibe de, o transmite a, otros objetos o
aplicaciones. Los eventos permiten a los objetos realizar acciones siempre que se
produce un acontecimiento especfico. Un ejemplo de evento para la clase Car sera un
evento Check_Engine. Puesto que Microsoft Windows es un sistema controlado por
eventos, stos pueden proceder de otros objetos, aplicaciones o entradas de usuario
realizadas al hacer clic con el mouse (ratn) o al presionar teclas.
Encapsulacin, herencia y polimorfismo
Los campos, propiedades, mtodos y eventos son solamente la mitad de la ecuacin de
la programacin orientada a objetos. Para que la programacin orientada a objetos sea
autntica los objetos deben admitir tres cualidades: encapsulacin, herencia y
polimorfismo.
La encapsulacin significa que un grupo de propiedades, mtodos y otros miembros
relacionados se tratan como si de una sola unidad u objeto se tratase. Los objetos
pueden controlar cmo se cambian propiedades o se ejecutan mtodos. Por ejemplo, un
objeto puede validar valores antes de permitir cambios en la propiedad. La
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
encapsulacin, adems, facilita la posibilidad de realizar cambios en la implementacin
pasado algn tiempo, mediante una actividad denominada ocultacin de datos, que
permite ocultar los detalles de implementacin de los objetos.
Herencia describe la posibilidad de crear nuevas clases basadas en una clase existente.
La nueva clase hereda todas las propiedades, mtodos y eventos de la clase base, y
puede personalizarse con propiedades y mtodos adicionales. Por ejemplo, puede crear
una nueva clase denominada Truck basada en la clase Car. La clase Truck hereda la
propiedad Color de la clase Car y puede tener propiedades adicionales como
FourWheelDrive.
Polimorfismo significa que 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 esencial en la programacin
orientada a objetos puesto que permite utilizar elementos con los mismos nombres,
independientemente del tipo de objeto que se est utilizando en ese momento. Por
ejemplo, dada una clase base Car, el polimorfismo permite al programador definir
diferentes mtodos StartEngine para cualquier nmero de clases derivadas. El mtodo
StartEngine de una clase derivada denominada DieselCar puede ser totalmente diferente
del mtodo con el mismo nombre en la clase base. Otros procedimientos o mtodos
pueden utilizar el mtodo StartEngine de las clases derivadas exactamente de la misma
forma, con independencia del tipo de objeto Car que se est utilizando en ese momento.
Sobrecarga, reemplazo y sombreado
La sobrecarga, el reemplazo y el sombreado son conceptos similares que pueden
confundirse fcilmente. Aunque las tres tcnicas permiten crear miembros con el mismo
nombre, existen algunas diferencias importantes.
Los miembros sobrecargados se utilizan para proporcionar diferentes versiones de
una propiedad o mtodo que tienen el mismo nombre, pero que aceptan un nmero
diferente de parmetros, o parmetros con diferentes tipos de datos.
Las propiedades y mtodos reemplazados se utilizan para reemplazar una propiedad
o mtodo heredados que no son apropiados en una clase derivada. Los miembros
reemplazados deben aceptar el mismo tipo de datos y nmero de argumentos. Las
clases derivadas heredan los miembros reemplazados.
Los miembros sombreados se utilizan para reemplazar localmente un miembro que
tiene un mbito ms amplio. Cualquier tipo puede sombrear cualquier otro tipo. Por
ejemplo, puede declarar un propiedad que sombree un mtodo heredado con el
mismo nombre. Los miembros sombreados no se pueden heredar.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Enlace en tiempo de compilacin y en tiempo de ejecucin
El compilador de Visual Basic lleva a cabo un proceso denominado enlace cuando se
asigna un objeto a una variable de objeto. Un objeto es de enlace en tiempo de
compilacin cuando se asigna a una variable que se declara de un tipo de objeto
especfico. Los objetos de enlace en tiempo de compilacin permiten al compilador
asignar memoria y realizar otras optimizaciones antes de que se ejecute la aplicacin.
Por ejemplo, en el siguiente fragmento de cdigo se declara que una variable es de tipo
FileStream:
' Add Imports statements to the top of your file.
Imports System.IO
'...
' Create a variable to hold a new object.
Dim FS As FileStream
' Assign a new object to the variable.
FS = New FileStream("C:\tmp.txt", FileMode.Open)
Debido a que FileStream es un tipo de objeto especfico, la instancia asignada a FS es
de enlace en tiempo de compilacin.
Por el contrario, un objeto es de enlace en tiempo de ejecucin cuando se asigna a una
variable que se declara de tipo Object. Los objetos de este tipo pueden contener
referencias a cualquier objeto, pero carecen de muchas de las ventajas de los objetos de
enlace en tiempo de compilacin. Por ejemplo, en el siguiente fragmento de cdigo se
declara una variable de objeto para contener un objeto devuelto por la funcin
CreateObject:
' To use this example, you must have Microsoft Excel installed on your computer.
Option Strict Off ' Option Strict Off allows late binding.
...
Sub TestLateBinding()
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
xlApp = CreateObject("Excel.Application")
'Late bind an instance of an Excel workbook.
xlBook = xlApp.Workbooks.Add
'Late bind an instance of an Excel worksheet.
xlSheet = xlBook.Worksheets(1)
xlSheet.Activate()
xlSheet.Application.Visible = True ' Show the application.
' Place some text in the second row of the sheet.
xlSheet.Cells(2, 2) = "This is column B row 2"
End Sub
Siempre que sea posible, utilice objetos de enlace en tiempo de compilacin, puesto que
permiten al compilador realizar importantes optimizaciones que producen aplicaciones
ms eficientes. Los objetos de enlace en tiempo de compilacin son bastante ms
rpidos y tambin facilitan la lectura y el mantenimiento del cdigo, ya que declaran
exactamente qu clase de objetos se estn utilizando. Otra ventaja del enlace en tiempo
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
de compilacin consiste en que permite el uso de funciones tiles como la finalizacin
automtica de cdigo y la Ayuda dinmica, puesto que el entorno de desarrollo
integrado (IDE) de Visual Studio .NET puede determinar exactamente el tipo de objeto
con el que se est trabajando mientras se modifica el cdigo. El enlace en tiempo de
compilacin reduce el nmero y la gravedad de los errores en tiempo de ejecucin al
permitir que el compilador notifique los errores cuando se compila un programa.
Nota El enlace en tiempo de ejecucin slo puede utilizarse para obtener acceso a
miembros de tipo declarados como Public. El acceso a miembros declarados como
Friend o Protected Friend provoca un error en tiempo de ejecucin.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Miembros compartidos
Los miembros compartidos son propiedades, procedimientos y campos que comparten
todas las instancias de una clase. En algunos lenguajes de programacin tales elementos
se denominan miembros estticos.
Los campos y propiedades compartidos son tiles cuando se tiene informacin de que es
parte de una clase, pero que no es especfica de ninguna instancia de una clase. Los
campos y propiedades normales existen de forma independiente para cada instancia de
una clase. Cuando se cambia el valor de un campo o propiedad asociados con cualquier
instancia, el valor de los campos o propiedades de otras instancias de la clase no se ver
afectado. Por otra parte, cuando se cambia el valor de un campo o propiedad
compartidos asociados con una instancia de una clase, se cambia el valor asociado con
todas las instancias de la clase. De esta forma, los campos y propiedades compartidos se
comportan como variables globales a las que slo se puede tener acceso desde
instancias de una clase. Sin campos y propiedades estticos, sera necesario utilizar
variables en el mbito de mdulo para conseguir el mismo efecto. No obstante, las
variables mdulo pueden dificultar la comprensin y el mantenimiento de las clases.
Adems, el uso de variables en el mbito de mdulo de esta forma infringe el concepto
de encapsulacin que las clases representan.
Los procedimientos compartidos son mtodos de clase que no estn asociados con una
instancia especfica de una clase. Por ejemplo, el mtodo Cos definido dentro de la clase
Math es un mtodo compartido. Un procedimiento compartido puede llamarse como un
mtodo de un objeto o directamente desde la clase. De esta forma, los procedimientos
compartidos representan una excepcin a la regla de que debe crearse una instancia de
una clase antes de poder utilizarla.
Los procedimientos compartidos no son instancias de la clase que se pasan
implcitamente. Por este motivo, en los mtodos compartidos no se permiten referencias
sin calificar a miembros de datos no compartidos.
Ejemplo de miembros compartidos
En el ejemplo siguiente se crea un campo de instancia, un campo compartido y un
mtodo compartido para demostrar cmo funcionan los miembros compartidos en el
cdigo:
Public Class ShareClass
Public InstanceValue As String
Public Shared SharedValue As String
Public Shared Sub ShareMethod()
MsgBox("This is a shared method.")
End Sub
End Class
Sub TestShared()
Dim Shared1 As New ShareClass() ' Create an instance of the class.
Dim Shared2 As New ShareClass() ' Create an instance of the class.
Shared1.SharedValue = "Share Value 1" ' Set the value of a shared field.
Shared2.SharedValue = "Share Value 2" ' Overwrite the first value.
MsgBox("The value of the shared field in the first instance" & _
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
"is: " & Shared1.SharedValue)
MsgBox("The value of the shared field in the second instance" & _
"is: " & Shared2.SharedValue)
' Call a method on the class without creating an instance.
ShareClass.ShareMethod()
End Sub
Al ejecutar el procedimiento TestShared, se crean dos instancias de la clase y se
modifica el campo compartido SharedValue para las dos instancias. Cuando se modifica
el campo compartido en la segunda instancia de la clase, el valor asignado al campo
compartido en la primera instancia de la clase se sobrescribe porque ambas instancias
hacen referencia al mismo campo.
Para mayor claridad, en este ejemplo se utilizan variables de objeto para tener acceso a
miembros compartidos, pero es una mejor prctica de programacin tener acceso
directamente a los miembros compartidos mediante el nombre de clase; por ejemplo,
ShareClass.SharedValue = "Share Value 2". El uso de la sintaxis de clase para
miembros compartidos reduce la confusin, puesto que clarifica cundo se utilizan
miembros compartidos y miembros de instancia.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Crear y utilizar objetos
Objetos de Visual Basic y otros orgenes
Los objetos que se utilizan en Visual Basic .NET proceden de orgenes internos y
externos. Entre los ejemplos de objetos internos se incluyen los objetos y clases
intrnsicos en el proyecto; entre los ejemplos de objeto externos se incluyen los
ensamblados y los objetos COM.
Objetos internos
Los objetos intrnsecos (o integrados) son los que proporciona Visual Basic.NET de
forma nativa. Entre stos se incluyen los tipos escalares primitivos como Integer y
Double, as como los tipos Array y String. No hace falta crear referencias a objetos
internos antes de utilizarlos en el proyecto.
Otros objetos internos son instancias de clases en el proyecto actual. Estas clases pueden
utilizarse siempre que sean necesarias dentro del proyecto y pueden estar disponibles
para otras aplicaciones cuando se crea un ensamblado.
Objetos externos
Los objetos externos son los que proceden de otros proyectos o ensamblados que no
estn disponibles en el proyecto de manera predeterminada. Es necesario crear
referencias de proyecto a los objetos externos para poder utilizarlos en el proyecto.
Los ensamblados son el origen ms comn de objetos para las aplicaciones de Visual
Basic .NET. La plataforma .NET Framework incluye ensamblados que contienen
objetos que se utilizan habitualmente. Algunos objetos en .NET Framework se tratan
como objetos intrnsecos, pero la mayora de los ensamblados deben importarse de
forma explcita mediante la instruccin Imports antes de poder utilizarlos. Cualquier
lenguaje compatible con Common Language Specification (CLS), como Visual Basic
.NET o Visual C#, puede crear y utilizar ensamblados. Para obtener informacin
detallada, vea Ensamblados.
En el pasado, los componentes COM eran el origen tradicional de objetos para
programadores de Visual Basic, pero actualmente los ensamblados .NET constituyen
una opcin mejor para los nuevos objetos. Todava se pueden utilizar los componentes
COM existentes en las aplicaciones; no obstante, el acceso a los objetos COM debe
realizarse mediante clases de interoperabilidad .NET. El acceso a una biblioteca COM
requiere el uso de un ensamblado de interoperabilidad que contenga clases de
interoperabilidad para cada clase COM definida en la biblioteca.
Adems del acceso a clases .NET nativas y a clases COM, tambin es posible llamar a
funciones definidas en bibliotecas de vnculos dinmicos (DLL). Visual Basic .NET
permite llamar a funciones de archivos DLL una vez que han sido declaradas con una
instruccin Declare. Visual Basic.NET agrega funcionalidad a la instruccin Declare al
permitir el uso del atributo DllImport para especificar valores predeterminados para
CallingConvention, ExactSpelling y SetLastError. Los parmetros de instrucciones
Declare pueden anotarse con el atributo MarshalAs, que admite la conversin de
parmetros en formas que no eran posibles en versiones anterior de Visual Basic.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Establecer y recuperar propiedades
Las propiedades de formularios y controles en Visual Basic .NET pueden establecerse
mediante programacin en tiempo de ejecucin, o en modo de diseo en la ventana
Propiedades. Las propiedades de la mayora de los objetos restantes, como los objetos
de los ensamblados o los objetos que haya creado, nicamente pueden establecerse
mediante programacin.
Las propiedades que se pueden establecer y leer se denominan propiedades de lectura y
escritura. Las propiedades que se pueden leer pero no modificar se denominan
propiedades de slo lectura. Las propiedades en las que se puede escribir pero que no se
pueden leer se denominan propiedades de slo escritura.
El valor de una propiedad se establece cuando se desea modificar el aspecto o el
comportamiento de un objeto. Por ejemplo, la propiedad Text de un control de cuadro
de texto se cambia para modificar el contenido del cuadro de texto.
El valor de una propiedad se obtiene cuando se desea conocer el estado de un objeto
antes de que el cdigo ejecute acciones adicionales, tales como asignar el valor a otro
objeto. Por ejemplo, se puede devolver la propiedad Text de un control de cuadro de
texto para determinar el contenido del cuadro de texto antes de ejecutar un cdigo que
podra modificar el valor.
Para establecer valores de propiedad
Utilice la sintaxis siguiente:
object.property = expression
Las instrucciones siguientes proporcionan ejemplos sobre cmo establecer propiedades:
TextBox1.Top = 200 ' Sets the Top property to 200 twips.
TextBox1.Visible = True ' Displays the text box.
TextBox1.Text = "hello" ' Displays 'hello' in the text box.
Nota Tambin puede establecer una propiedad pasndola a parmetros ByRef, en cuyo
caso la propiedad queda modificada por el resultado devuelto por el parmetro ByRef.
Para obtener valores de propiedad
Utilice la sintaxis siguiente:
variable = object.property
Tambin puede obtener un valor de propiedad como parte de una expresin ms
compleja, sin asignar la propiedad a una variable. El siguiente cdigo modifica la
propiedad Top de un control de botn de opcin:
Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
ByVal e As System.EventArgs)
' [statements]
RadioButton1.Top += 20
' [statements]
End Sub
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Realizar acciones con mtodos
Los mtodos son procedimientos asociados a objetos. Excepto los campos y las
propiedades, que representan informacin que puede almacenar un objeto, los mtodos
representan acciones que puede realizar un objeto. Los mtodos pueden afectar a los
valores de las propiedades. Por ejemplo, en el caso de una analoga de radio, se puede
emplear un mtodo SetVolume para cambiar el valor de una propiedad Volume.
Asimismo, en Visual Basic .NET, los elementos de los cuadros de lista tienen una
propiedad List, que se puede cambiar con los mtodos Clear y Add.
Al utilizar un mtodo en cdigo, la forma de crear la instruccin depende de cuntos
argumentos requiere el mtodo y de si devuelve un valor. Generalmente, los mtodos se
utilizan igual que las subrutinas o las llamadas de funcin. De forma ms especfica, los
mtodos se invocan del mismo modo que los procedimientos de mdulos, exceptuando
que los mtodos se pueden calificar con una expresin especificando la instancia del
objeto a cuyo mtodo debe llamarse. Si no est calificada, la instancia es de forma
implcita la variable Me.
Para utilizar un mtodo que no requiera argumentos
Utilice la sintaxis siguiente:
object.method()
En el ejemplo siguiente, el mtodo Refresh vuelve a dibujar el cuadro de imagen:
PictureBox1.Refresh() ' Forces a repaint of the control
Nota Algunos mtodos, como Refresh, no tienen argumentos y no devuelven valores.
Para utilizar un mtodo que requiera varios argumentos
Ponga los argumentos entre parntesis y seprelos mediante comas. En el ejemplo
siguiente, el mtodo MsgBox utiliza argumentos que especifican el mensaje que se debe
mostrar y el estilo del cuadro de mensaje:
MsgBox("Database update complete", _
MsgBoxStyle.OKOnly Or MsgBoxStyle.Exclamation,"My Application")
Para utilizar un mtodo que devuelva un valor
Asigne el valor devuelto a una variable o utilice directamente la llamada al mtodo
como parmetro para otra llamada. El cdigo siguiente almacena el valor devuelto:
Dim Response As MsgBoxResult
Response = MsgBox("Do you want to exit?", _
MessageBoxButtons.YesNo Or MsgBoxStyle.Question, _
"My Application")
Este ejemplo utiliza el valor devuelto por el mtodo Len como argumento para MsgBox.
Dim MyStr As String = "Some String"
' Displays "String length is : 11
MsgBox("String length is : " & Len(MyStr))
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Realizar mltiples acciones en un objeto
A menudo, necesita realizar varias acciones diferentes en el mismo objeto. Por ejemplo,
puede que necesite establecer varias propiedades o ejecutar varios mtodos para el
mismo objeto.
Para establecer varias propiedades para el mismo objeto
Una forma de hacerlo es crear varias instrucciones utilizando la misma variable de
objeto, como en el cdigo siguiente:
Private Sub UpdateForm()
Button1.Text = "OK"
Button1.Visible = True
Button1.Top = 24
Button1.Left = 100
Button1.Enabled = True
Button1.Refresh()
End Sub
Sin embargo, este cdigo se puede escribir y leer con ms facilidad mediante la
instruccin With...End With, como en el cdigo siguiente:
Private Sub UpdateForm2()
With Button1
.Text = "OK"
.Visible = True
.Top = 24
.Left = 100
.Enabled = True
.Refresh()
End With
End Sub
Tambin se pueden anidar instrucciones With...End With situndolas una dentro de la
otra, como en el cdigo siguiente:
Sub SetupForm()
Dim AnotherForm As New Form1()
With AnotherForm
.Show() ' Show the new form.
.Top = 250
.Left = 250
.ForeColor = Color.LightBlue
.BackColor = Color.DarkBlue
With AnotherForm.Textbox1
.BackColor = Color.Thistle ' Change the background.
.Text = "Some Text" ' Place some text in the text box.
End With
End With
End Sub
Sin embargo, en la instruccin anidada With, la sintaxis hace referencia al objeto
anidado; las propiedades del objeto en la instruccin With externa no estn establecidas.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Tratar formularios como objetos
Los formularios son objetos grficos que componen la interfaz de usuario de las
aplicaciones. Dentro de Visual Basic, las clases definen cmo se muestran los
formularios y qu pueden hacer. Cuando se muestra un formulario en tiempo de
ejecucin, Visual Basic .NET crea una instancia de la clase Form que se puede utilizar
como cualquier otro objeto. Puede agregar propiedades y mtodos personalizados a
formularios y tener acceso a ellos desde otros formularios o clases de la aplicacin.
Para crear un mtodo nuevo para un formulario
Agregue un procedimiento declarado como Public, como en el cdigo siguiente:
' Create a custom method on a form.
Public Sub PrintMyJob()
'.
'.Add code for your method here.
'.
End Sub
Para agregar un campo nuevo a un formulario
Declare una variable pblica en el mdulo del formulario, como en el cdigo siguiente:
Public IDNumber As Integer
Para tener acceso a mtodos de un formulario distinto
1. Cree una nueva instancia del formulario a cuyos mtodos desea obtener acceso.
Cuando hace referencia a un nombre de formulario, en realidad, est haciendo
referencia a la clase a la cual pertenece el formulario, no propiamente al objeto.
Nota Visual Basic 6 proporcionaba, para cada clase de formulario, una variable
global implcita con el mismo nombre que la clase de formulario. Visual Basic .NET
no proporciona una declaracin de variable implcita.
2. Asigne el formulario a una variable de objeto. La variable de objeto hace referencia
a una instancia nueva de la clase de formulario.
El ejemplo siguiente llama correctamente al procedimiento PrintMyJob:
Dim newForm1 As New Form1
newForm1.PrintMyJob
En el ejemplo anterior, no se muestra el formulario nuevo. No es necesario mostrar un
objeto de formulario para utilizar sus mtodos. Para mostrar el formulario nuevo, debe
agregar el cdigo siguiente:
newForm1.show
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Utilizar la palabra clave New
Para crear una instancia de una clase, utilice la palabra clave New. A diferencia de los
tipos de valor, como Integer y Double, los objetos son tipos de referencia, y debe
crearlos de forma explcita antes de poder utilizarlos. Por ejemplo, observe las
siguientes dos lneas de cdigo:
Dim Button1 As System.Windows.Forms.Button
Dim Button2 As New System.Windows.Forms.Button()
La primera instruccin declara una variable de objeto que puede contener una referencia
a un objeto de botn. Sin embargo, la variable Button1 contiene el valor Nothing hasta
que le asigne un objeto de tipo Button. La segunda instruccin tambin define una
variable que puede contener un objeto de botn, pero la palabra clave New crea un
objeto de botn y lo asigna a la variable Button2.
Como los formularios y controles son en realidad clases, puede utilizar la palabra clave
New para crear instancias nuevas de estos elementos, cuando sea necesario.
Para crear instancias nuevas de una clase con New
1. Abra un nuevo proyecto de formularios Windows Forms y coloque un botn de
comando y otros controles diversos en un formulario denominado Form1.
2. Agregue el cdigo siguiente al procedimiento de evento Click del botn de
comando:
Dim f As New Form1
f.Show
3. Ejecute la aplicacin, y haga clic en el botn de comando varias veces.
4. Coloque a un lado el formulario frontal. Como el formulario es una clase con una
interfaz visible, puede ver las copias adicionales. Cada copia tiene los mismos
controles, en la misma posicin que los del formulario original en tiempo de diseo.
Puede utilizar la palabra clave New para crear objetos desde dentro de las clases. El
procedimiento siguiente proporciona un ejemplo.
Para ver cmo New crea instancias de una clase
1. Abra un proyecto nuevo, y coloque un botn de comando en un formulario
denominado Form1.
2. En el men Proyecto, elija Agregar clase para agregar una clase al proyecto.
3. Ponga a la clase nueva el nombre de ShowMe.vb.
4. Agregue el procedimiento siguiente a ShowMe:
Public Class ShowMe
Sub ShowFrm()
Dim frmNew As Form1
frmNew = New Form1
frmNew.Show()
frmNew.WindowState = 1
End Sub
End Class
5. Agregue el cdigo siguiente al evento Button1_Click del botn del formulario:
Protected Sub Button1_Click(ByVal sender As System.Object, _
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
ByVal e As System.EventArgs) Handles Button1.Click
Dim clsNew As New ShowMe()
clsNew.ShowFrm()
End Sub
6. Para utilizar este ejemplo, ejecute la aplicacin y haga clic en el botn de comando
varias veces. Aparecer un icono minimizado de formulario en la barra de tareas
cada vez que se cree una instancia nueva de la clase ShowMe.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Administracin de recursos
Todos los objetos consumen recursos del sistema, como memoria, identificadores de
archivo y conexiones de bases de datos. Common Language Runtime (CLR) administra
los recursos automticamente, y generalmente no necesita preocuparse de liberar los
objetos innecesarios. No obstante, comprender cmo funciona la administracin de
recursos puede ayudarle a disear las aplicaciones ms eficazmente.
Recoleccin de elementos no utilizados
CLR utiliza un sistema denominado recoleccin de elementos no utilizados para
administrar los recursos asignados. La recoleccin de elementos no utilizados del
sistema libera los recursos de un objeto cuando la ejecucin de cdigo de la aplicacin
ya no puede tener acceso al objeto. En las siguientes secciones se describen algunos de
los cambios en la forma de administrar los recursos en Visual Basic .NET.
Asignar objetos a Nothing
Nothing es una palabra clave utilizada por Visual Basic .NET para indicar que una
variable de objeto no contiene una referencia a un objeto. En versiones anteriores de
Microsoft Visual Basic se recomendaba asignar los objetos no utilizados a Nothing para
disociar la variable de objeto y liberar recursos. An pueden asignarse los objetos no
utilizados a Nothing, pero debido a la forma en que Visual Basic .NET administra los
recursos, este proceso no garantiza que los objetos queden liberados inmediatamente.
En general, slo deberan asignarse a Nothing objetos que permanecen activos durante
mucho tiempo, como miembros compartidos o variables globales.
Dispose
Algunos objetos admiten un mtodo denominado Dispose cuya finalidad consiste en
liberar recursos del sistema de forma ms expeditiva. Las clases que admiten el mtodo
Dispose deben implementar la interfaz IDisposable. Es necesario llamar explcitamente
al mtodo Dispose cuando se deseen liberar recursos de objetos. Por ejemplo:
ThisObject.Dispose
Finalize
Otro mtodo que admiten algunas clases, Finalize, se ejecuta automticamente cuando
se libera un objeto y puede utilizarse para realizar otras tareas de limpieza. El mtodo
Finalize es similar al mtodo Class_Terminate() que se utilizaba en versiones anteriores
de Microsoft Visual Basic. A diferencia del mtodo Dispose, CLR llama
automticamente al mtodo Finalize poco despus de que el objeto deja de ser
necesario.
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
Pasar objetos a procedimientos
Visual Basic .NET le permite pasar objetos como argumentos a procedimientos del
mismo modo en que se pasan otros tipos de argumentos. Los procedimientos siguientes
le mostrarn cmo hacerlo.
Para pasar una instancia nueva de un formulario a un procedimiento
1. Abra un proyecto, cree un formulario nuevo y agrguele un botn de comando
denominado Button1.
2. Copie el cdigo siguiente en el evento Button1_click:
Protected Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
Dim newForm As New Form1()
newForm.Show()
CenterForm(newForm)
End Sub
Sub CenterForm(ByVal TheForm As Form)
' Centers the form on the screen.
Dim RecForm As rectangle = Screen.GetBounds(TheForm)
TheForm.Left = CInt((RecForm.Width - TheForm.Width) / 2)
TheForm.Top = CInt((RecForm.Height - TheForm.Height) / 2)
End Sub
Tambin puede pasar un objeto como un argumento por referencia y posteriormente, en
el procedimiento, establecer el argumento a un objeto nuevo.
Para pasar una referencia de objeto a un procedimiento de otro formulario
1. Abra un proyecto y cree un formulario denominado Form1.
2. Agregue un segundo formulario denominado Form2.
3. Coloque un control de cuadro de imagen en cada formulario.
4. Ponga al cuadro de imagen del formulario 1 el nombre de PictureBox1.
5. Ponga al cuadro de imagen del formulario 2 el nombre de PictureBox2.
6. Asigne una imagen a PictureBox2 haciendo clic en la propiedad Image de la ventana
Propiedades. Funcionar cualquier imagen pequea; encontrar archivos .bmp y .jpg
en el directorio de Windows.
7. Agregue el cdigo siguiente a Form2:
Public Sub GetPicture(ByVal x As PictureBox)
Dim objX As PictureBox
' Assign the passed-in picture box to an object variable.
objX = x
' Assign the value of the Picture property to the Form1 picture box.
objX.Image = PictureBox2.Image
End Sub
8. Agregue el cdigo siguiente al evento Form1_Click en form1:
Protected Sub Form1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
Dim newForm2 As New Form2()
newForm2.GetPicture(PictureBox1)
End Sub
Interbank
Instructor: MCT Luis Dueas
Lectura: POO en Visual Basic .NET (Parte 1)
9. Ejecute la aplicacin y haga clic en Form1. La imagen de Form2 aparece en el
cuadro de imagen de Form1.
El procedimiento de evento Form1_Click llama al procedimiento GetPicture de Form2
y le pasa el cuadro de imagen vaco. El procedimiento GetPicture de Form2 asigna la
propiedad Image del cuadro de imagen de Form2 al cuadro de imagen vaco de Form1,
y la imagen de Form2 se muestra en Form1.
Interbank
Instructor: MCT Luis Dueas