En cap铆tulos anteriores, hemos indicado como Visual Basic.NET declara las variables, las utiliza y las redefine; hemos estudiado el tipo de variable que utiliza y para qu茅 casos los utiliza. Tambi茅n hemos mencionado como utiliza unas funciones especiales del lenguaje que se llaman eventos para producir ciertas acciones sin necesidad apenas de c贸digo. Adem谩s te he querido mostrar algunos comandos b谩sicos a todos los lenguajes de programaci贸n, como pod铆an ser los condicionales y los operacionales b谩sicos.

Ahora vamos a dar un salto adelante en la forma que tiene de programar Visual Basic.NET. Como ya dije, en cap铆tulos anteriores, Visual Basic.NET es un lenguaje estructurado dentro de la soluci贸n Visual Studio.NET, la cual tiene integrada una enorme cantidad de librer铆as que los lenguajes utilizan para crear sus aplicaciones. Esta parte del curso, sirve de introducci贸n para los cap铆tulos posteriores en los que entraremos en detalle a estudiar las librer铆as.

Estructura general.

En Visual Basic.NET, la informaci贸n de su estructura se ordena de forma jer谩rquica, con lo cual para poder usar sus comandos debe haber un orden establecido. Te muestro un ejemplo.

En programaci贸n, por lo general se declara un comando y se asigna la acci贸n a ese comando; as铆 en un c贸digo de Visual Basic Script, la instrucci贸n document.write (), te muestra en pantalla un texto que posteriormente introduzcas entre par茅ntesis.

La instrucci贸n document.write, es una instrucci贸n definida por el lenguaje de Script, que genera en el procesador del sistema un c贸digo l贸gico y este lo interpreta ayudado por el compilador del lenguaje de Script. La tarjeta gr谩fica del PC recibe los datos l贸gicos y est谩 los convierte en datos legibles para el ojo humano. El compilador del lenguaje de Script, realiza la misma funci贸n que el compilador CLR de Visual Basic.NET, y es hacer que el ordenador entienda los datos de los lenguajes de programaci贸n.

En este ejemplo te he indicado como el compilador es el traductor del programa de Script para que lo entienda el ordenador. Aunque no es el caso, imagina que la sentencia l贸gica del c贸digo generado y compilado que llega al procesador de la CPU del ordenador fuera 01010001100101. Esta sentencia l贸gica mostrar铆a en pantalla la informaci贸n que hubieses escrito con el comando document.write. Pero si hubi茅semos escrito mal la informaci贸n del comando de Script, como por ejemplo:

Document.write (鈥淗OLA鈥)

El c贸digo l贸gico, ser铆a distinto al esperado, y el comparador del Script, mostrar铆a un error, haciendo que el procesador no entendiera ese c贸digo (el fallo est谩 en la instrucci贸n, pues he cambiado un letra, 驴sabes cu谩l?). Todo este rollo viene a indicarte que en Visual Basic.NET, las instrucciones tienen un orden establecido y m谩s a煤n cuando los comandos comparten librer铆as con otros comandos. Pero antes de empezar debes de saber que los comandos y librer铆as se clasifican dentro de su uso:

Librer铆as simples.
Son aquellas en los cuales con una simple instrucci贸n se puede generar una salida o un simple programa. Por ejemplo, el comando ya estudiado MSGBOX(), muestra un cuadro de texto que se imprime en pantalla.

Estructuras.
Se refieren a comandos que necesitan de otros comandos para completar su funcionamiento. Generalmente los m谩s conocidos son los comandos que crean los condicionales, como por ejemplo la sentencia IF que termina la frase con el comando THEN y termina de cerrarse el condicional con el fin de la instrucci贸n END IF.

Acciones.
Designo como acciones al hecho de que las librer铆as se tengan que concatenar mediante puntos, unas a otras para poder realizar una acci贸n en concreto. Las acciones no son librer铆as simples. M谩s bien es una estructura, pero, en vez de ser una estructura l贸gica como un espacio de nombre, un condicional o un m贸dulo, por ejemplo, es una estructura concatenada de librer铆as que desarrollan un prop贸sito espec铆fico.

Intelisense.

Cuando en el c贸digo de Visual Basic.NET escribimos cualquier entrada de teclado, nos aparece un cuadro de dialogo con una serie de comandos. De modo que si escribimos una instrucci贸n, el motor CRL tiene agregada una funci贸n que te ayuda a elegir adecuadamente el siguiente comando para esa acci贸n de programaci贸n. Aunque casi no se aprecia en la imagen, al escribir las entradas de "ms鈥", INTELISENSE te muestra un cuadro de dialogo con las opciones de MsgBox, MsgBoxResult y MsgboxStyle, porque el CRL interpreta que t煤 quieres escribir estas sentencias. Puedes desactivar esta ayuda, pero te recomiendo encarecidamente que no lo hagas, ya que, para las personas que est谩n empezando es una gran ayuda visual y recordatorio.

intelisense act煤a en consecuencia con tu escritura

En el curso de Visual Basic.NET no nos vamos a privar de disfrutar de esta gran ayuda.

Empezamos por el principio.

Cuando utilizas Acciones, debes de saber que estos se separan de las librer铆as que utilicen de Visual Studio.NET mediante puntos. As铆 una instrucci贸n para copiar un archivo de texto a una ubicaci贸n ser铆a de la forma:

Copiar.archivo.enviar.direccion

En donde todos los comandos separados por puntos son librer铆as o bien son comando. Pueden ser unos u otros, o ambos a la vez, pero no se pueden poner de la forma que uno quiera, sino, que existe un orden establecido para ello.

Existen miles de posibilidades de combinar estas librer铆as para conseguir lo que uno quiera, pero tendr谩s que combinarlas adecuadamente. Antes de realizar el proyecto, debes tener claro cu谩l es el objetivo que buscas y que quieres que haga; solo eso te facilitar谩 la cosas a la hora de crearlo.

M谩s tarde estudiaremos las principales librer铆as que vamos a utilizar en VB.NET, pero para empezar voy a describir un objeto fundamental en Visual Basic.NET y que utilizaremos muy a menudo en nuestros proyectos.

Me.
Es una palabra clave del tipo puntero (que hace referencia al objeto), que esta referenciado de la clase. Volviendo al formulario de nuestro Videoclub, al pulsar sobre cualquier control, estamos haciendo una referencia a ese control dentro de la clase formulario.

uso de Me.

Como puedes ver se suele sustituir Me por el nombre o referencia del objeto que realiza la programaci贸n. Podr铆amos llamar al control espec铆fico mediante la clave ME.nombrecontrol y asignarle una acci贸n u evento. Y as铆, por ejemplo en el evento activated del Form1, la primera l铆nea Me.BackColor = Color.DarkGray, se podr铆a sustituir llamando al objeto en cuesti贸n, es decir Form1.BackColor = Color.DarkGray, lo cual es un poco redundante al tener que llamar continuamente al objeto para asignarle funcionalidad (si estas dentro del objeto, para que tener que renombrarlo continuamente, 驴no?). Esto tiene una relaci贸n directa con la herencia.

Pero por fortuna la palabra reservada Me, no solo se utiliza dentro del objeto para referenciar al propio objeto, sino que sirve tambi茅n para hacer referencias a otros objetos fuera del proceso en el que se est谩 programando actualmente.

referenciar objetos desde otros

Con Me, entonces podemos llamar a todos los objetos de la clase principal, sean m茅todos, eventos y objetos (botones, TextBox, Labels, etc.), siempre que pertenezcan a la clase principal. As铆, imagina que quiero escribir un texto en el TextBox1 del Form2 al utilizar un evento de Click en el Button1 del Form1 del proyecto Videoclub:

error de referencia

error de referencia

Me da un error porque estoy intent谩ndo referenciar un objeto de la clase principal que utiliza sus propias referencias; y para evocar dichas referencias, como pertenece a la clase principal del proyecto, solamente tendr铆a que llamar al objeto con Form2.TexBox1.text ="".

Herencia.

Es la cualidad de crear nuevas clases basadas en otras clases. Las nuevas clases, heredar谩n las cualidades y propiedades de las clases originales pudiendo modificar el comportamiento en los procesos heredados o a帽adir otros nuevos. Una clase nueva no puede heredar de varias clases, sino que lo hace de una sola clase. Para heredar en una clase las propiedades, m茅todos y caracter铆sticas de otra clase, se utiliza la instrucci贸n Inherits seguido del nombre de la clase que queremos heredar. En el siguiente ejemplo vamos a heredar una clase de otra.

Herencia de clases

Como puedes ver, hemos declarado entre un proceso Sub Main() y End Sub una variable llamada heredado, de nueva clase que llamaremos clase_derivada(). En la siguiente l铆nea, asignamos la variable de la clase que hemos creada a una variable nombre que heredamos de los procesos anteriores.

En Friend Class, estamos declarando las variables que luego heredaremos en la clase derivada clase_derivada(). Al declarar con Inherits, en Friend Class clase_derivada, estamos cogiendo las variables declaradas en basica y utiliz谩ndolas en clase_derivada.

Esta es la forma de heredar una clase. Est谩 claro que la palabra clave Me realiza la herencia de la clase principal form, por lo que cuando haces referencia a un control desde de la clase principal System.Windows.Forms.lo_que_sea, est谩s accediendo a la representaci贸n real de ese control de la librer铆a, por lo que heredas todo las caracter铆sticas y m茅todos del mismo.

My.

Esta caracter铆stica de Visual Basic.NET, reduce el n煤mero de l铆neas de c贸digo al simplificar el acceso de los procesos. Debido a la amplitud y profundidad de .NET Framework, puede resultar muy complicado encontrar la funcionalidad que necesita.

Para solucionar este problema, My, ofrece puntos de entrada a las clases y funciones que se suelen utilizar en .NET Framework. Adem谩s tambi茅n expone algunas nuevas clases de alto nivel de .NET Framework que re煤nen funcionalidad relacionada con API basadas en tareas.

My, puede exponer funcionalidad devolviendo una clase de .NET Framework de la que se ha creado una instancia y est谩 lista para utilizar, aplazando una llamada a un m茅todo de .NET Framework, devolviendo una clase que agrega la funcionalidad existente en .NET Framework relacionada con una misma tarea o devolviendo una clase generada din谩micamente que proporciona acceso a los elementos del proyecto. Siempre que es posible My, sirve como mecanismo de descubrimiento de las clases existentes en .NET Framework y expone dichos tipos directamente.

MY es un nombre de espacio que se utiliza para llamar a bibliotecas especializadas con las que podr谩s realizara acciones espec铆ficas sin necesidad de escribir cadenas de c贸digo enormes. Cuando dentro de un proceso escribes My., Intelisense te muestra las opciones que puedes elegir y que te muestro a continuaci贸n:

intelisense de my

Que como puedes ver se divide en siete familias principales. Cada grupo principal, tiene relaci贸n con la acci贸n especificada, de tal forma que seleccionando una u otra podr谩s realizar funciones espec铆ficas. A continuaci贸n te describo las principales caracter铆sticas de cada librer铆a de MY.

application.
Este objeto proporciona m茅todos, eventos y propiedades relacionados con la aplicaci贸n actual. Los m茅todos, propiedades o eventos solo se aplican a la aplicaci贸n actual, de tal forma que si tienes varios formularios en el proyecto, deber谩s de utilizar en cada uno esta librer铆a, pues no podr谩s programarla en un 煤nico objeto y a帽adirla a otros, a menos que no crees una clase y la heredes.

Computer.
Este componente de MY le permite realizar muchas opciones a trav茅s de propiedades de algunos objetos. Por ejemplo, puedes copiar el contenido del portapapeles a trav茅s de la instrucci贸n Clipboard, o escuchar sonido en formato WMA con las librer铆as Audio.Play. Otra librer铆a que engloba My.Computer es la librer铆a Filesystem, altamente usada para el tratamiento de directorios y archivos en nuestro Pc. Por ejemplo para crear una carpeta en un directorio espec铆fico debemos de declarar la creaci贸n de esa carpeta con la direcci贸n de las librer铆as correspondientes y despu茅s llamar a la librer铆a para que la cree.

crear carpeta

Forms.
Este componente nos permitir谩 acceder a los formularios que tengamos en nuestra aplicaci贸n. No se suele utilizar demasiado esta librer铆a, pero la utilizaremos a la hora de crear nuestra aplicaci贸n maestra.

Setting.
Como indica su nombre, esta librer铆a nos permite acceder a la configuraci贸n de la aplicaci贸n. Todos los cambios realizados en la configuraci贸n de nuestra aplicaci贸n ser谩 grabada en un fichero XML al que podremos acceder para cambiar la configuraci贸n de la aplicaci贸n.

Users.
Este componente nos permite configurar informaci贸n respecto al usuario como acreditar la propiedad del proyecto, entre otros.

WebServices.
Representa los servicios Web que tenga el proyecto. Habilita al proyecto para poder representar ciertas acciones en una p谩gina Web.

Aplicaci贸n de consola.

Aunque principalmente vamos a crear aplicaciones de Windows, tambi茅n podemos crear aplicaciones de Consola de comandos DOS o s铆mbolo del sistema que ejecuten los mismos proyectos que nuestra aplicaci贸n de Windows. En la consola, se produce la llamada line per line es decir, debemos de escribir una l铆nea en la ventana de comandos para que se ejecute la siguiente instrucci贸n.

Esto no es del todo cierto, pues desde la aplicaci贸n de consola puedes crear formularios, con sus propiedades, sus funciones, eventos, controles del mismo y generar acciones diferentes sin utilizar la consola para nada en absoluto. La aplicaci贸n de consola utiliza la interfaz del S铆mbolo del sistema para crear la aplicaci贸n, eso s铆, requiere de las librer铆as externas de Visual Basic.NET para generar el proyecto, pues, los comandos propios del S铆mbolo de sistema 煤nicamente no sirven para crear la estructura del proyecto. Para crear un nuevo proyecto, en el cuadro de dialogo Nuevo proyecto, selecciona Aplicaci贸n de consola, tal como se muestra en la imagen.

Nuevo proyecto de consola

Como puedes ver la aplicaci贸n de consola no muestra ning煤n formulario inicial, y la pantalla de dise帽o no est谩 disponible. Solo tienes una pantalla de c贸digo en la cual se muestra el c贸digo del proyecto. La consola de comandos todo el c贸digo se aplicar谩 entre las etiquetas Module y End Module.

proceso interno de la consola

Como puedes ver entre estas etiquetas existe tambi茅n un proceso Sub Main() y End Main en el cual se agregar谩n las instrucciones principales al igual que si de una clase se tratase en un documento Windows Form.

La programaci贸n en consola difiere de la programaci贸n de Windows Form en que por ejemplo, la consola no est谩 orientada a objetos y se requiere de introducir el c贸digo que se quiere que se muestre en la pantalla. Esto no dice que no podamos utilizar librer铆as que utiliza el proyecto de Windows Form, pues, como m谩s adelante veremos, necesitamos de estas librer铆as para crear proyectos estables y funcionales.

En posteriores temas manejaremos formularios y aplicaciones de consola en concreto para aprender a usarlas junto a tu formulario. No te despistes y continua junto a mirpas.com en tu formaci贸n.