CLASES Y OBJETOS

 

 

 

¿Qué es un Objeto?

 

¿Qué es una clase?

 

 

  Ejemplos con NET

 

    - Creación de un clase básica

 

     - Property

 

 

Volver a página principal

 
 

 

Al ser el primero, en este artículo, repasaré brevemente la base de la programación orientada a objetos utilizando ejemplos basados en el lenguaje de Microsoft, VB.NET.  

 

 ¿Qué es un objeto?

Un objeto es la instancia de una clase, en otras palabras: una clase es una plantilla en la que se basan los objetos. No está claro, no? pues pongamos un ejemplo.

Dios, un gran programador, decidió un día crear a los gatos. Primero creó una plantilla con las características de estos, como por ejemplo que tendrían 4 patas, cola, orejas puntiagudas... y un gran etc. de diferentes particularidades de estos felinos. Pues bien, una vez creada esa plantilla única con todas las propiedades de los gatos se podría decir que Dios había creado la primera clase y a la vez, una instancia a esta podría crear el animal (objeto) gato.

A estas alturas ya tenemos unos cuantos clones de gatos sobre la tierra, ya que la instancia a esa clase sólo nos dará gatos con propiedades idénticas. ¿Qué pasa entonces con las características de cada gato? ¿No es posible crear gatos (objetos) utilizando una clase pero con propiedades propias de cada objeto? ¿No existe la mutación en el mundo de la programación orientada a objetos? ;-). La respuesta es afirmativa pero este tema lo dejaremos de lado hasta que veamos la herencia.

 Con lo que he explicado hasta ahora se podría confundir un objeto con un tipo de datos de los lenguajes procedurales tradicionales pero aquí es donde encontramos la diferencia entre la programación orientada a objetos y los lenguajes . Los objetos también pueden contener métodos o procedimentos  a la vez que las estructuras de datos agrupándolo todo y no separado y sin relación como los lenguajes procedurales. De esta forma se facilita al programador la creación de módulos ordenados y de fácil reutilización. Así pues, los anteriores gatos ya no sólo guardan información de sus propiedades o características sino también de las funciones (métodos) que son capaces de realizar como por ejemplo "saltar" o "correr".
  

Después de esta pequeña introducción a los objetos veamos pues la definición y como crear este tipo de plantillas o clases.

 

Clase

Una clase es un programa que para ser ejecutado necesita ser invocado mediante la creación de una variable del mismo tipo que la clase; Las clases a diferencia de otros controles de Windows no tienen una interfaz visible y sólo son accesibles sus propiedades o métodos al crear una instancia de esta. En resumen: en una clase combinaremos los datos que pueden manipular o contener y sus funciones o métodos para acceder o modificar esos datos.  Para dar una idea de la importancia de las clases en NET framework  podemos decir que prácticamente todo el entorno es una clase u objeto que deriva de system.object. Por ejemplo, cuando declaramos una variable Integer lo que hacemos realmente es invocar a la clase System.Integer con todas sus propiedades y métodos.

 

Una vez dicho esto, que mejor que ver unos ejemplos

 

Ejemplos

En este primer ejemplo veremos como crear y utilizar una clase básica sin utilizar ningún constructor ni ningún otro método no explicado anteriormente. Según avancemos en los temas recuperaremos el mismo ejemplo para mejorarlo o ampliarlo utilizando las diferentes características de la programación orientada a objetos, en adelante OOP (Object Oriented Programming).  

Primero crearemos  un proyecto nuevo "Windows application" en el se nos mostrará el típico formulario en blanco. Luego añadiremos una clase con el nombre "gato".  Dentro de la clase gato encontraremos el siguiente código:

 

  

           Public Class Gato

 

           End Class

 

 

Luego definiremos las variables y métodos:

 El gato que definiremos tendrá como propiedades hambre, una dieta y su peso. Estas propiedades han de ser visibles desde el programa que le haga referencia por eso declararemos las variables, en este caso las propiedades del gato, como públicas.

Crearemos un  método : Comer : Incrementa el peso sumándole la dieta y modifica la propiedad hambre a falso. Como podemos apreciar en NET se ha reemplazado (contador = contardor + X   utilizado en VB por el equivalente contador += X) Igualmente se puede aplicar al resto de operadores, como la resta ( -=) multiplicación (*=), división (/=), división entera ( \=) y concatenación (&=)

 

Public Class Gato

 

Public  hambre As Boolean, Dieta As Integer

  Private tpeso As Integer

 

  Public Sub comer()

     Me.peso += Me.Dieta

     Me.hambre = False

  End Sub

 

End Class

 

Ahora en el formulario para probar la clase Gato

 

      Public Class Form1

    

   Inherits System.Windows.Forms.Form

       Dim gato1 As New Gato()

  End Class

 

 

Aquí podemos comprobar que realmente todo en NET se basa en clases ya que el mismo formulario se declara automáticamente como clase heredando de System.

El siguiente código lo podemos poner dentro de un botón o en el evento Form1_Load. Al poner la palabra gato1.  veremos como el IDE muestra los miembros de la clase entre ellos Comer, Hambre o Dieta. Así pues, ya los podemos modificar :

 

 

 

 

gato1.peso = 20000

gato1.hambre = True

gato1.Dieta = 100

 

 

 

 

 

Property

 

 

Por ahora hemos accedido directamente a las propiedades de la clase pudiendo asignar cualquier valor siempre y cuando sean los datos correctos dependiendo de su tipo. Pero, ¿qué ocurre si queremos controlar las propiedades de la clase?  Ahora mismo, si damos a entender que el peso del gato está gramos, podríamos conseguir rápidamente un Record Guinness  asignándole a la propiedad un valor de 200.000 gramos. :) Para controlar las propiedades de una clase utilizaremos los procedimientos Property

Una propiedad puede ser de lectura, escritura o lectura y escritura. Los descriptores para acceder a los datos de estas son Get  y Set para la lectura y escritura, respectivamente, de las propiedades . De esta forma podemos agregar código para la validación de los datos, permitiendo rangos definidos o modificando la entrada de datos con cálculos internos de la misma propiedad.

Dicho esto añadiremos el siguiente código a la clase Gato :

 

 

 

Property Peso()

   Get

      Return tpeso

   End Get

   Set(ByVal Value)

      If Value > 100 And Value < 10000 Then

         tpeso = Value

      End If

   End Set

End Property

 

 

 

Al ejecutar ahora el programa, veremos que después de intentar modificar la propiedad asignándole el valor 20000, peso, sigue conteniendo el valor 0 ya que sólo permite valores dentro del rango (100-10000). El proceso de validación, en este caso, no advierte al usuario de su error por lo que dará lugar a una perdida de datos ajena al usuario. Para evitar esto,  podemos crear una excepción o simplemente utilizar un MsgBox.    

 

 

 

   Set(ByVal Value) 

     If Value > 100 And Value < 10000 Then

          tpeso = Value

      Else

          MsgBox("El peso no es correcto")

      End If

   End Set

 

 

 

Volver a Título▲            ◄Índice principal►             Timeless web site    

 

Este sitio se actualizó por última vez el 27 de diciembre de 2004