Sunteți pe pagina 1din 6

Unidad 17.

Ciclo de vida de una clase


17.1. Objetivos del tema.
Desarrollar y comprender las distintas fases por las que pasa un objeto
desde que se inicializa hasta que se borra o se elimina del programa.
17.2. Introduccin.
Sabemos como crear cdigo en nuestra clase, en las dos caras del mismo,
como control de los datos que se asignan a la misma, y como parte de los
mtodos de la misma.
Pero tambin tenemos que saber que la vida de una clase pasa por distintas
etapas, conocindolas podremos disear mejor y obtener el mejor
rendimiento de la misma.
Hay que tener presente que cuando se crea un objeto a partir de la clase
que hemos escrito, ese objeto va a pasar por varias fases.

Inicializacin
Ejecucin
Finalizacin.

Y esas fases conviene recordarlas a la hora de la explotacin de la misma,


pues habr algunas tareas que nos interesen se desarrollen exclusivamente
en ese instante, y no posteriormente.
17.3. Iniciar la clase, crear una instancia.
Cuando se crea un objeto a partir de una clase, el primer paso es instanciar
ese objeto, con una u otra sintaxis, se dispone de un constructor, un mtodo
especializado, que se ejecuta de forma automtica al crearse el objeto de la
clase en cuestin.
En VB se denomina New.

Clase Ejemplo
Metodo Constructor()

Fin Metodo

Metodo Cuenta(Inicio como entera, Final Como entera)


.. / ..
Fin Metodo

Fin Clase

En esa fase disponemos de la posibilidad de reclamar datos necesarios para


la correcta ejecucin de la clase, y es donde debemos o podemos realizar el
control de los mismos.

Metodo Constructor(Incremento como entera)


Si Incremento es distinto de 0
VariableInterna = Incremento
Fin Condicion
Fin Metodo

Tambin podemos optar por no reclamar ninguna informacin y arrancar con


los datos de nuestra clase inicializados a los valores que nosotros
consideremos oportunos.

Clase Ejemplo
Crear VariableInterna Entera = 1

Metodo Constructor()
Fin Metodo

Metodo Cuenta(Inicio como entera, Final Como entera)


.. / ..
Fin Metodo
Fin Clase
Cualquiera de las dos soluciones es correcta, cual utilizar vendr marcado
por las circunstancias en las que se tenga que utilizar el objeto.

Clase Ejemplo
Crear VariableInterna Entera

Metodo PrimeraInstanciaSolamente()
VariableInterna = 1

Fin Metodo

Metodo Constructor()
Fin Metodo

Metodo Cuenta(Inicio como entera, Final Como entera)


.. / ..
Fin Metodo
Fin Clase
17.4. Proteger nuestra clase.
Se trata de bloquear el constructor sin argumentos convirtindolo en
private.
Es en muchas ocasiones imprescindible, sobre todo cuando deseamos exigir
datos en la inicializacin 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 mtodo, - ms adelante se expondr el tema , ese es el camino ms 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 tambin 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 aade una nueva en la segunda versin del mismo.
17.5. Ejecucin 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 ejecucin del objeto, se iniciar en una fase inicial cuando se declara y se
inicializa el mismo, y en segundas fases cuando se reclama la ejecucin de
cualquiera de sus mtodos.
La finalizacin de la ejecucin de cualquiera de sus mtodos no implica que
deje de ser utilizado el objeto y que ste deje de consumir recursos.
La ejecucin permanecer activa hasta que se ejecute una asignacin 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 mtodo de
finalizacin previsto en el lenguaje.
Tengamos presente que mientras no se ejecute una de estas acciones, el
objeto estar consumiendo recursos del sistema.
17.6. Finalizacin de la clase.
Las clases, sus objetos, mientras estn en uso, estn 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
ms recursos al sistema.
Los sistemas suelen incluir un sistema de inspeccin que investiga que
objetos no estn siendo utilizados, para liberar el espacio que ocupan, pero
eso implica que hasta que esa situacin 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 ocupacin inadecuada de recursos, sin que tenga que ser la
finalizacin del procedimiento o del programa el que acabe con l, lo que es
una demora en el tiempo.
La finalizacin de un objeto se puede conseguir con la ejecucin de un
mtodo de finalizacin, runFinalize, o Finalize, en cada lenguaje tendr un
nombre.

El mtodo de finalizacin 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 disea, al objeto que est en uso.

System.Recolectar

Clase.Finalizar

Sin embargo hay que asegurarse de que ese mtodo se ejecute, ya que
podra darse la situacin de que no fuera llamado por el sistema, por lo
tanto hay que comprobar en el lenguaje en uso si esa situacin puede
darse.
Tambin conviene comprobar si el lenguaje utilizado dispone de mtodos
que obliguen a la hora de la finalizacin de la ejecucin del programa a la
inspeccin de la existencia de mtodos de finalizacin sin ejecutar todava.

S-ar putea să vă placă și