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 (“HOLA”)

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.