Destructores y recolector de basura
|
|
|
Normalmente cuando creamos objetos nos interesa que estos tengan algunas características iniciales. Por ejemplo, nuestra clase Gato, cada vez que la instanciamos debemos dar valores a Dieta, Peso y Hambre. ¿No sería mucho mejor definir como parámetros esos datos o que la misma clase tuviera unos valores predeterminados?. Aquí es donde entran en acción los constructores. Un constructor es un método especial, implementado en la misma clase, que es llamado en el momento en que creamos una instancia de esta. ¿Has dicho método? ¿Significa qué podemos crear un constructor simplemente utilizando la palabra clave Procedure o Function? Pues casi, pero no! Los constructores tienen su propia palabra clave: New en nuestro caso para implementarlos. También tienen otro aspecto en común con los métodos "normales", ya que una clase puede contener más de un constructor con diferentes parámetros o argumentos para inicializar el objeto. A eso lo llamaremos Sobrecarga y como dije con la herencia... ese tema ya lo veremos más adelante ;) Podemos comprobar, que el tema constructor, no es un concepto difícil de entender pero nada mejor que mostrar un ejemplo. Primero en la clase debemos añadir el siguiente constructor parametrizado:
|
|
Sub New(ByVal col As String, ByVal Gr As Integer) Me.color = col Me.Peso = Gr End Sub
|
|
En este ejemplo vemos que el constructor es casi idéntico a cualquier método parametrizado. Para instanciar a la clase utilizando el constructor debemos poner el siguiente código :
|
|
Dim gato1 As New Gato("blanco", 500)
|
|
De esta forma crearemos un nuevo objeto Gato con las propiedades Color y Peso inicializadas.
Destructores y recolector de basura (GC)
Cuando creamos un objeto, el sistema le presta unos recursos que en nuestro caso serán limitados. Debemos, por lo tanto, intentar eliminar los objetos que no necesitemos para liberar recursos del sistema como la memoria, ficheros o conexiones abiertas. A la hora de eliminar un objeto, no hace falta que lo hagamos nosotros directamente sólo bastará con eliminar las referencias al objeto mediante la palabra clave Nothing. Al eliminar las referencias el recolector de basura (GC - Garbage Collector) se encargará de eliminar el objeto y recuperar los recursos para otros usos. Sólo existe un pequeño problema de control cuando utilizamos el GC; En el momento en que asignamos Nothing al objeto, no se llama automáticamente al GC, por lo tanto, no sabremos en que momento el objeto deja de existir. GC comprueba periódicamente los objetos, buscando los que no utilizaremos más o objetos no referenciados, para liberar recursos, pero como he comentado antes, lo hará de vez en cuando al faltar recursos de sistema, salir de la aplicación... etc.
|
|
Objeto = Nothing
|
|
Este sitio se actualizó por última vez el 27 de diciembre de 2004