Unidad 23. Cómo programar una clase (I)





23.1. Objetivos del tema.

Se han visto los distintos elementos de una clase y sus características, ahora conviene intentar sentar criterios o formas de abordar la programación de una clase.

23.2. Introducción.

No se puede negar que las clases son una evolución natural de la forma de programar, o sea que negar la evidencia es del todo inútil

En principio es muy atrevido escribir un capitulo con éste tema, pero no se pretende decir a nadie como tiene que hacer las cosas, sino simplemente indicar cuales son los criterios que se pueden seguir, o en que orden se ejecutan los métodos y se usan las variables, propiedades, para a partir de ahí crear lo que podría ser un orden más o menos adecuado, evidentemente desde lo que llevamos visto, el tiempo muchas veces te desdice, o te reafirma.

23.3. Utilización de las clases.

La utilización de las clases con los pequeños ejemplos que hemos visto quizás no queda muy claro, pero hay que resaltar que su destino es el de crear objetos con las mismas, y que esos objetos son autónomos unos con respecto a otros.

 

¿Cuando definir una clase?, en principio eso va a ser un problema, pero desde luego en la actualidad toda la programación se basa o está integrado por clases, otra cosa es el código que tengamos que escribir nosotros. Eso es otra historia. Pero ya lo iremos aprendiendo con el tiempo.

En principio una clase sería práctico crearla cuando deseamos crear lo que anteriormente definíamos como una librería, para la gestión de datos, para cualquier cosa en realidad.

También si deseamos crear una agrupación de código relacionado entre si, y que el fuente quede protegido. Hay que tener en cuenta que las empresas de programación de esta forma pueden tener objetos desarrollados que se reutilizan de una a otra aplicación, y que son o están depurados.

Una de las ventajas de las clases es que en contra de las librerías, o en algunos casos de las librerías, según el lenguaje, el código no es accesible por el usuario de la misma.

Hay más casos en los que se puede definir una clase, como son las denominadas interface, o las equivalente a los tipos, que por cuestiones de rendimiento así se aconseja. Pero no es este el motivo principal del tema, por lo que solo dejar constancia de dicha situación para que quien lo desee pueda buscar ampliar dichos contenidos.

23.4. Como escribir una clase.

Cuando usamos una clase, lo que se hace es siempre seguir los siguientes pasos.

 

Declarar un objeto de esa clase.

Eso implica que se ejecute por defecto un método New, Constructor.

Por lo tanto los datos que nos interese controlar, o las acciones a ejecutar en esa fase deben estar escritas en ese método.

Asignar las características a las propiedades de la clase.

Pero puede que no se le asigne ninguna propiedad de las existentes.

Utilizar la clase con los objetos que se declaren de la misma.

Utilizar los métodos de la clase.

Finalizar el uso del objeto.

Se ejecuta el método destructor de la clase, Finalize, y se liberan recursos.

 

En base a esos pasos debemos programar el contenido de nuestra clase.

23.5. Declarar un objeto de nuestra clase.

Este paso es el más sencillo de todos.

 

Crear Objeto como nuevo ClaseDefinidaExistente

 

O bien se puede escribir

 

Crear Objeto como ClaseDefinidaExistente

Objeto = nuevo ClaseDefinidaExistente

 

Cualquiera de las dos sintaxis es válida, aunque la más utilizada es la primera.

Ahora hay que escribir la clase, y hemos de escribir una clase eficiente y robusta contra el mal uso de la misma.

Si por el motivo que fuese deseamos que no se pueda declarar un objeto de la clase que nosotros escribimos sin que se ejecute el control adecuado en su creación hay que proteger o bloquear el método constructor.

Para ello lo declaramos Private sin argumentos y solo podrá ejecutarse en la versión que nosotros escribamos.

El ejemplo que sigue no permite declarar un objeto de la clase, sin que se le pase como argumento un valor de tipo string en el momento de la definición de dicho objeto.

Por lo tanto es imposible crear un objeto de esa clase sin más.

 

Clase Ejemplo

  Crear Variable como String = "Variable inicializada"

  Crear VariablePropiedad como String = "Propiedad inicializada"

 

  Private Constructor()

    // esto impide la creación de un objeto .

  Fin procedimiento

 

  Public Constructor(Valor Como String)

    VariablePropiedad = Valor

  Fin procedimiento

End Class

 

Este ejemplo nos obliga a declarar el objeto con la siguiente sintaxis.

 

  Crear Objeto como nuevo Clase("Inicialización")

 

Impide que se pueda utilizar

 

  Crear Objeto como nuevo Clase

 

Por lo que si nosotros añadimos en el método Constructor de la clase el siguiente código

 

  Private Constructor()

 

  Fin procedimiento

 

  Public Constructor(Valor como String)

    Si Valor <> Nulo Entonces VariablePropiedad = Valor

  Fin procedimiento

 

Si al inicializar la clase no se recibe un valor adecuado la clase quedaría inicializada con el valor por defecto de la propiedad, sin asumir el valor recibido.

 

Si la clase es heredada desde otra clase la condición se mantiene, vemos un ejemplo.

 

Public Clase Heredera

  Heredar Clase   // Heredar la clase del ejemplo anterior

 

  Publico Constructor()

    // El primer paso es llamar al constructor de la clase origen, y

    // proporcionar un valor de inicialización.

    ClaseBase.Constructor("Valor desde la clase heredera")

  Fin procedimiento

Fin de Clase

 

Ya se ha cubierto una primera etapa que es la de controlar la creación de un objeto de nuestra clase de forma incontrolada.

 

El siguiente paso es la declaración de las variables.

 

En el momento de declarar las variables de la clase nos encontraremos con dos tipos de variables.

 

Las que actúan como variables.

Las que representan internamente a una propiedad, que es la parte visible.

 

Las variables normales, les podemos dar el tratamiento que habitualmente le damos a las variables de cualquier programa, pero las que se han de emparejar con las propiedades, o que simplemente son públicas, lo lógico es inicializarlas al valor que nos interese, con el fin de que la clase a la hora de inicializarse no obligue a que sea imprescindible asignar valor a las propiedades, si no que estas ya dispongan de un valor que pueda ser operativo, y solo sea necesario ajustar para personalizar el objeto.

De esta forma con un mínimo de código, el objeto que se deriva de nuestra clase se convierte en operativo.

Octubre-2010
Pág. 23.1

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies