Curso de VisualBasic.NET.

Programación Orientada a Objetos.

Un lenguaje de programación orientado a objetos significa que es un lenguaje visual y cuyo sistema de programación se basa en dos principios básicos. Primero, está basado en una interfaz gráfica visual, por lo que no tienes que programar los controles ni la interfaz gráfica que compone tu aplicación. Segundo, al no tener que diseñar la interfaz gráfica, se ahorra espacio de código para escribir las instrucciones que darán propiedades a la aplicación.

Todo lenguaje de programación que está orientado a eventos debe de poseer ciertas características que describo a continuación.

Encapsulación:
La información que un objeto manipule será únicamente manipulada por ese objeto o su clase. Cada objeto o clase tiene una serie de código que solo será usada por el propio CLR de Visual Basic.NET, sin que el usuario pueda acceder a ella.

Herencia:
Cuando se crean nuevas clases derivadas de otras clase. Estas nuevas clases comparten las características y propiedades de las anteriores (eventos), además de crear nuevas propiedades.

Polimorfismo:
Es que puedan existir métodos y propiedades iguales en distintas clases.

Puede que lo que te he contado te haya sonado a chino, así que vamos a profundizar más. En lo referente a encapsulación, los controles que se agregan al formulario, por ejemplo, un Button, un TextBox, un RadioButton, ya están diseñados. Tú, como usuario, los puedes dar ciertas propiedades como tamaño, imagen, texto, que acción realizara según el evento que le indiques, si está activado, si es visible…, etc., pero no tienes porqué crear el control, ya que está diseñado. A ese diseño inicial, no puedes acceder, porque ese código lo ha ejecutado el CLR de Visual Basic.NET y tiene grabada las instrucciones necesarias para generarlo en caso de que sea usado. En este principio se basa la encapsulación, en que no puedas sacar los procesos de datos pregrabados, para que así no tengas que crearlos por tu propia cuenta. Pero sin embargo, si puedes acceder al código de ese control, para asignarle una función, ligarlo a un evento, generarle unas propiedades y modificar su estado físico. Y eso lo puedes hacer desde las propiedades del propio control, en el Explorador de soluciones al seleccionar el control, o desde un archivo que se crea en el explorador de soluciones automáticamente, y que se actualiza al introducir nuevos componentes. Este archivo se llama Designer.vb.

La herencia es la cualidad de crear clases basadas en otras. Al igual que un hijo hereda los ojos de su madre, por ejemplo, una clase creada por tu cuenta deriva de otra. En Visual Basic.NET, la herencia de clases se realiza de una clase y no de varias clases como puede hacerse en C++; esto significa, que en nuestro ejemplo, si el hijo tiene los ojos de la madre, no heredará el pelo del padre, ya que es otra clase distinta el padre. Para indicar al CLR de Visual Basic.NET que vamos a heredar de otra clase, necesitamos declararla para que nuestra clase coja los métodos y propiedades de dicha clase. Eso lo hacemos con la instrucción Inherits. ¿Qué voy muy rápido? Tal vez tengas razón. Lo primero es saber que es una clase.

Clases

Las clases, funciones, espacios de nombres, forman parte de .NET Framework. Cada clase permite realizar una acción distinta, escribir un mensaje, crear un archivo, insertar una imagen, etc. Las clases sustituyen a las librerías de cualquier lenguaje de programación, lo que pasa es que en NET. Framework, todas estas librerías están integradas en forma de clases.

Cuando se crea una nueva aplicación en Visual Basic.NET, el proyecto crea un archivo con extensión .vb el cual, al abrir el código, se genera una estructura principal formada por las sentencias Public Class nombredelformulariovb y End Class.

Si tú haciendo un programa pinchas en cualquier elemento del mismo para introducir código, el código de ese elemento estará entre Public Class y End Class. Por ejemplo, en nuestro proyecto VideoClub tenemos únicamente el Formulario, cuyo nombre por defecto es Form1, y cuatro botones, que por defecto su nombre es Button1 hasta el Button4.

Bien, si cambiamos a vista de código veremos que, la clase principal es Public Class Form1 y termina con End Class, y que el código del formulario que empieza con Private Sub Form1_evento… y termina con End Sub, el código del Button1 también empieza con la misma estructura, ambos códigos están dentro de la clase principal de Form1. ¿Hasta ahora lo vas pillando?

código de la clase Form1

Resumiendo, que cuando abres el código de todos los controles de un proyecto, para introducir datos en ellos, lo que haces es abrir la clase de ese control para darle unas propiedades según sus métodos.

Existen muchas clases; un Button genera de una clase, un TextBox, de otra, etc., se puede decir que cada control tiene su propia clase, pero claro, son clases derivadas de otra principal. En el caso de un proyecto formulario de Windows, derivan de la clase Form. Pero esta clase Form, está también dentro de otro elemento llamado espacio de nombres.

El NameSpace son clases de carácter públicas, es decir, que todos los elementos del proyecto tienen acceso a él. Las clases, dependiendo de si están dentro de otra clase, pueden ser públicas o privadas, y siempre serán privadas cuando estén contenidas en otra clase o módulo (aplicación de consola). A continuación vamos a realizar una serie de ejercicios para que entendáis esto mencionado.

Ámbito de una variable.

Sin irnos más lejos vamos a empezar abriendo el formulario en el evento principal Load pulsando dos veces sobre el formulario del proyecto VideoClub (Todavia no deberías de tener asignado ningún código en éste evento).

Una variable, basicamente es un tipo de dato que almacena un valor. Imaginatelo como una cajita en la que guardas un objeto.

Sin enrrollarme demasiado (nada más porque veremos esto en detalle más adelante en el curso), una variable puede ser local, global o privada. Por defecto será privada a dicho elemento, es decir si yo declaro una variable en el formulario, solo será accesible desde el formulario. Veamos un ejemplo:

ámbito privado de la variable

Si yo declaro la variable dentro del formulario que tiene la declaración de private, no voy a poder usarla en otro control. Por ejemplo si intento usarla para que se muestre dentro del TextBox1 cuando pulso dentro de él, el propio IDE de VS.NET me marca la opción de que no está disponible:

No reconoce la variable

Para convertir en pública (y por tanto compatible con los demás objetos de la clase), se ha de declarar en la cabecera de la clase de la forma siguiente:

variable pública

Ahora si ejecutas la aplicación, cuando escribas sobre el TextBox1 y se ejcuten los diferentes eventos, aparecerá el texto dentro del contenido, ya que ahora la variable si es pública y el objeto TexBox1 tiene acceso a ella.

texto ahora es pública

El orden jerárquico en una clase de VB.NET es necesario para el desarrollador, ya que le será fundamental para que se organice coherentemente y muestre su código ordenado, pues a la hora de diseñar un código, debe de existir un orden lógico que, de lo contrario, en proyectos grandes, nos volveríamos locos si queremos encontrar un proceso que no lo tenemos localizado.

Primero los namespace, después las clases principales y a continuación el resto de clases.

Si añadimos un nuevo formulario al proyecto (Menú Proyecto y Añadir Windows Form):

Añadir nuevo formulario al proyecto

El nombre del formulario dejalo por defecto como Form2 y que sea Aplicación de Windows Form.

Al introducir el siguiente código y ejecutar, el IDE nos da un error porque en realidad la variable que se declaró en la clase de Form1.vb no está disponible en la clase Form2.vb aunque las dos clases pertenecen al mismo namespace.

La variable no es global al proyecto

Más adelante en este curso, aprenderás a manejar las clases y compartir sus recursos entre objetos diferentes.