UNIDAD 2

Programación orientada a objetos en Visual Basic .NET.

Todo .NET Framework está basado en clases (u objetos). A diferencia de las versiones anteriores de Visual Basic, la versión .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases contenidas en .NET Framework, además casi sin ningún tipo de limitacion.
La POO es una evolución de la programación por procedimientos llamada también estructurada. Se basaba en funciones y procedimientos y el código 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 magníficas aplicaciones sin utilizar la POO (y sin aprovecharse de sus ventajas) , y sobre todo, en un tiempo relativamente reducido.

¿Que es una clase?

Los programas de Visual Basic se generan con objetos como formularios y controles. Los objetos también se pueden utilizar para representar cosas reales como personas, equipos informáticos o incluso algo más abstracto, como una cuenta bancaria.
Una clase es simplemente una representación 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 hayáis dado cuenta, ya hemos utilizado las clases en otros tutoriales de VB que hay por Cristalab , como por ejemplo,en el tutorial básico de Visual Basic .NET o al crear aplicaciones con .NET y las seguiremos viendo en los próximos 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 acción de crear una clase se denomina creación de instancias.
Hasta ahora hemos agregado los controles TextBox a su formulario arrastrándolos desde el Cuadro de herramientas, pero también puede crear instancias de un objeto TextBox en su código si utiliza la palabra clave New.

Dim Textbox1 As New TextBox

¿Que hay dentro una clase?

Todos los objetos tienen propiedades que describen sus atributos, métodos que definen sus acciones y eventos que definen sus respuestas. Igualmente, la clase que define un objeto tiene sus propias propiedades, métodos y eventos ( a veces llamados miembros) que se pasan a todas las instancias de esa clase.
Por ejemplo, una clase que representa una cuenta bancaria podría tener propiedades como AccountNumber o AccountBalance, métodos como CalculateInterest y eventos como BalanceChanged. Una vez creada la instancia de un objeto de cuenta bancaria, puede tener acceso a sus propiedades, métodos y eventos de igual manera que si se tratara de un objeto TextBox.
Algunos miembros de una clase son privados; sólo se tiene acceso a ellos mediante código dentro de la clase. Por ejemplo, una clase de cuenta bancaria puede tener un método para calcular un saldo. Lo lógico es permitir que un programa lea ese balance pero no que pueda cambiarlo directamente.
Puede ocultar los miembros de una clase si los declara como Private o exponerlos si los declara como Public. También puede permitir el acceso a una propiedad y a la vez impedir que el programa cambie su valor declarándolo como ReadOnly.
El código siguiente muestra cómo podría ser una clase BankAccount, por ejemplo:

'Declaramos la clase BlankAccount
Class BankAccount
 'La hacemos privada
 Private AccountNumber As String
 Private AccountBalance As Decimal
 'Y la ponemos publica para que calcule el balance
 Public Sub UpdateBalance()
 End Sub
 ReadOnly Property Balance() As Decimal
  Get
   Return AccountBalance
  End Get
 End Property
End Class


Crear la primera clase

Una de las mejores razones para utilizar clases es que una vez que ha creado una clase para cierto tipo de objeto, se puede reutilizar esa clase en cualquier proyecto.
Por ejemplo, muchos de los programas que escribimos pueden involucrar personas: Un programa de administrador de contactos para los contactos comerciales o un programa para realizar un seguimiento de empleados. Aunque los programas pueden ser considerablemente diferentes, los atributos que se aplican a cada persona serían los mismos. Todas tienen nombre, edad, dirección, número de teléfono, etc.
Para empezar a ver mejor crear clases,y usarlas crearemos una clase que represente a una persona;
Podemos guardar esta clase y utilizarla en otros programas que escribamos en el futuro.

Las clases se pueden crear de tres maneras: como parte del código en un módulo de formulario en un proyecto de aplicación para Windows, como un módulo de clase separado agregado a un proyecto de aplicación para Windows o como un proyecto de bibliotecas de clase independiente.

Crear clases

Si habéis seguido los tutos de Visual Basic de Cristalab, o sabéis de ello, sabréis que al hacer doble clic en un formulario y abrir el Editor de código se veía 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 código que se haya escrito entre las dos instrucciones es parte de la clase. Aunque de manera predeterminada un módulo de formulario contiene sólo una clase única, puede crear módulos adicionales agregando código debajo de la instrucción End Class, tal como se ilustra a continuación:
Public Class Form1 
  ' El código de vuestro Form AQUI 
End Class 
Public Class MyFirstClass 
  ' El código de vuestra clase AQUI 
End Class 
La desventaja de crear clases de esta manera es que sólo están disponibles dentro del proyecto donde se crearon. Si deseamos compartir una clase con otros proyectos, puede colocarla en un módulo de clase.

Módulos de clase

Un módulo de clase es un archivo de código, separado del resto, que contiene una o más clases. Como es un archivo independiente, se puede reutilizar en otros proyectos.
Los módulos de clase se pueden crear de dos maneras:
  • Como un módulo agregado a un proyecto de aplicación para Windows. 
  • Como un proyecto de bibliotecas de clase independient
Puede agregar un nuevo módulo de clase a un proyecto existente seleccionando Clase en el cuadro de diálogo Agregar nuevo elemento, disponible en el menú Proyecto. Para trabajar en durante el tutorial, crearemos un proyecto de bibliotecas de clases independientes.
Vamos a ver cómo crear un proyecto de de biblioteca de clases:
  • En el menú Archivo, seleccionamos Nuevo proyecto. 
  • En el panel Plantillas, del cuadro de diálogo Nuevo proyecto, hacemos clic en Biblioteca de clases.

Agregar propiedades a una clase

Ahora, aprenderemos a agregar propiedades a la clase que creamos en la sección anterior.
Todos los objetos tienen atributos y las propiedades representan atributos. Antes, hicimos la clase "Persons", que representa a una persona; las personas tienen atributos como el nombre y la edad, por lo que la clase Persons necesita propiedades que representen dichos atributos.
Se pueden agregar propiedades a una clase de dos maneras:
  • Como campo.
  • Como procedimiento de propiedad.
También podemos determinar cómo funciona una propiedad utilizando los modificadores Public, ReadOnly o WriteOnly.

Campos y procedimientos de propiedad

Los campos son variables públicas dentro de una clase que se pueden establecer o leer desde fuera de la clase. Resultan de utilidad para propiedades que no se tienen que validar, por ejemplo, un valor "Boolean" (True o False).
En el caso de la clase Persons, se puede tener una propiedad Boolean denominada Married, que especifica si una persona está soltera o casada, puesto que hay sólo dos valores posibles.
Para agregar un campo a una clase, el código podría ser como el que sigue.
Public Married As Boolean
La mayoría de las propiedades, sin embargo, son más complejas; en la mayor parte de los casos utilizaremos procedimientos de propiedad para agregar una propiedad a una clase.
Los procedimientos de propiedad tienen tres partes:
  • Una declaración de una variable privada para almacenar el valor de la propiedad.
  • Un procedimiento Get que expone el valor.
  • Un procedimiento Set que, como indica su nombre, establece el valor.
Por ejemplo, un procedimiento de propiedad para una propiedad Name, de la clase Persons, podría ser como el que sigue:
Private nameValue As String
Public Property Name() As String
  Get
    Name = nameValue
  End Get
  Set(ByVal value As String)
    nameValue = value
  End Set
End Property
La primera línea de código declara una variable String privada, nameValue que almacenará el valor de la propiedad. El procedimiento de propiedad en sí comienza con Public Property y termina con End Property.
El procedimiento Get contiene el código que se ejecutará cuando desee leer su valor; por ejemplo, si lee la propiedad Persons.Name, el código devolverá el valor almacenado en la variable nameValue.
El procedimiento Set contiene código que se utiliza para asignar un nuevo valor a la variable nameValue usando un valor pasado como argumento value. Por ejemplo, si escribimos el código Persons.Name = "Wyrm", el valor String Wyrm se pasará como argumento value; el código del procedimiento Set lo asignará a la variable NameValue para su almacenamiento.
¿Por qué complicarnos tanto, en lugar de utilizar un campo que represente la propiedad Name? En el mundo real, hay ciertas reglas para los nombres: por ejemplo, los nombres normalmente no contienen números. Puede agregar código al procedimiento Set para comprobar el argumento value y devolver un error si contiene números.



No hay comentarios.:

Publicar un comentario