Unidad 17. Ciclo de vida de una clase (II)





17.4. Proteger nuestra clase.

Se trata de bloquear el constructor sin argumentos convirtiéndolo en private.

Es en muchas ocasiones imprescindible, sobre todo cuando deseamos exigir datos en la inicialización de la misma, y no deseamos que se inicie una copia de nuestra clase de forma accidental.

 

Clase Ejemplo

  Crear VariableInterna Entera

 

  Metodo PrimeraInstanciaSolamente()

    VariableInterna = 1

  Fin Metodo

 

  Privado Metodo Constructor()

 

  Fin Metodo

 

  Metodo Cuenta(Inicio como entera, Final Como entera)

      .. / ..

  Fin Metodo

Fin Clase

 

De esa forma no es visible y no se puede utilizar, y es imposible que se use accidentalmente.

 

Normalmente es muy habitual que necesitemos varios escenarios posibles en el inicio de un objeto, por lo que la solicitud de datos en el constructor se puede volver algo complicada.

En las clases existe el concepto de sobrecarga, esto significa poder escribir varias versiones de un mismo método, - más adelante se expondrá el tema - , ese es el camino más adecuado para poder solventar el problema de los distintos escenarios posibles en el inicio de una clase para los objetos que se derivan de ella.

 

En el siguiente ejemplo, podemos observar como se han escrito varias versiones del constructor en el cual se ha declarado distintas versiones de la misma variable, String, Integer, aunque no tiene porque cambiar el nombre de la variable.

 

Clase Ejemplo

  Privado Metodo Constructor()

  Fin Metodo

 

  Privado Metodo Constructor(EscenarioUno como String)

  Fin Metodo

 

 

  Privado Metodo Constructor(EscenarioDos como Entera)

  Fin Metodo

Fin Clase

 

Pero también se puede crear con distintas variables en cada uno de ellos.

 

Clase Ejemplo

  Privado Metodo Constructor(EscenarioUno como String)

  Fin Metodo

 

  Privado Metodo Constructor(EscenarioUno como String, OtraVariable como Entera)

  Fin Metodo

Fin Clase

 

Podemos observar como en este ejemplo se mantiene el nombre de la variable, pero se añade una nueva en la segunda versión del mismo.

17.5. Ejecución de la clase.

La clase no se ejecuta, se ejecuta una instancia de la misma, en el objeto que de ella se crea.

El punto de inicio es el constructor de la misma.

La ejecución del objeto, se iniciará en una fase inicial cuando se declara y se inicializa el mismo, y en segundas fases cuando se reclama la ejecución de cualquiera de sus métodos.

La finalización de la ejecución de cualquiera de sus métodos no implica que deje de ser utilizado el objeto y que éste deje de consumir recursos.

La ejecución permanecerá activa hasta que se ejecute una asignación de “nothing” o “null”, al objeto que de ella se deriva, o bien hasta que desaparezca el mismo de la memoria por finalizar el procedimiento o programa que lo reclama, o bien finalicemos la misma con el método de finalización previsto en el lenguaje.

Tengamos presente que mientras no se ejecute una de estas acciones, el objeto estará consumiendo recursos del sistema.

17.6. Finalización de la clase.

Las clases, sus objetos, mientras están en uso, están consumiendo recursos, lo que se traduce en memoria del sistema, por lo que conviene que cuando un objeto deje de ser útil lo liberemos, puesto que eso permitirá disponer de más recursos al sistema.

Los sistemas suelen incluir un sistema de inspección que investiga que objetos no están siendo utilizados, para liberar el espacio que ocupan, pero eso implica que hasta que esa situación se produce, el recurso está ocupado y sin poder ser utilizado por otros programas. De ahí la importancia de finalizar el uso del objeto cuando dejemos de utilizarlo en nuestro programa, para evitar esa ocupación inadecuada de recursos, sin que tenga que ser la finalización del procedimiento o del programa el que acabe con él, lo que es una demora en el tiempo.

La finalización de un objeto se puede conseguir con la ejecución de un método de finalización, runFinalize, o Finalize, en cada lenguaje tendrá un nombre.

 

El método de finalización puede pertenecer a la misma clase, o bien al sistema.

El “recolector de basura”, normalmente pertenece al sistema en uso, no a la clase que se diseña, al objeto que está en uso.

 

System.Recolectar

 

Clase.Finalizar

 

Sin embargo hay que asegurarse de que ese método se ejecute, ya que podría darse la situación de que no fuera llamado por el sistema, por lo tanto hay que comprobar en el lenguaje en uso si esa situación puede darse.

También conviene comprobar si el lenguaje utilizado dispone de métodos que obliguen a la hora de la finalización de la ejecución del programa a la inspección de la existencia de métodos de finalización sin ejecutar todavía.

 

Octubre-2010
Pág. 17.2

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

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