elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  ciclo de vida de un objeto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ciclo de vida de un objeto  (Leído 1,430 veces)
nuevopirata

Desconectado Desconectado

Mensajes: 15


Ver Perfil
ciclo de vida de un objeto
« en: 16 Enero 2008, 22:45 pm »

hola buenas tardes a todos los que hacen posible este foro, mi pregunta es la siguiente: ¿que es ciclo vidal de un objeto? ¿interacciones entre tipo?

gracias por la ayuda prestada


En línea

foobar

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: ciclo de vida de un objeto
« Respuesta #1 en: 17 Enero 2008, 03:35 am »

Los objetos viven desde que se crean hasta que se establecen a Nothing, o hasta que el programa finalice normalmente. En el caso de referencias circulares, teóricamente nunca se destruyen (a menos que el programa finalice).

Vamos a suponer que tenemos dos módulos de clase:

Código:
'
' CClasePadre
'
Private oChild As CClaseHijo

Function foo(sArg As String) As Boolean
  Debug.Print sArg

  foo = True
End Function

Property Get Child() As CClaseHijo
  Set Child = oChild
End Property

Private Sub Class_Initialize()
  '
  ' Constructor de la clase.
  ' Crea una instancia de la clase Hijo y
  ' se asigna a sí misma como Padre.
  '
  Set oChild = new CClaseHijo

  oChild.setParent(Me)
End Sub

Código:
'
' CClaseHijo
'
Private oParent As CClasePadre

Friend Sub setParent(oArg As Object) As Boolean
  Set oParent = oArg
End Function

Property Get Parent() As CClasePadre
  Set Parent = oParent
End Property

Ahora, vamos a hacer algunas pruebas:

Código:
Sub TestClass()
  Dim Padre As CClasePadre
  Dim Hijo   As CClaseHijo

  ' Crea el objeto Padre y la función constructora del
  ' mismo crea una instancia de Hijo (Class_Initialize)
  '
  Set Padre = New CClasePadre

  '
  ' Obtiene una referencia del hijo del objeto
  ' padre y la guarda en la variable local Hijo
  '
  Set Hijo = Padre.Child

  '
  ' En teoría debería destruir al objeto Padre, pero
  ' como Hijo tiene la propiedad Parent que hace referencia
  ' a nuestro objeto Padre, el objeto no se destruye, sólo
  ' esta instancia.
  '
  Set Padre = Nothing

  '
  ' Ahora en teoría, debería destruirse el objeto Hijo, pero como
  ' este tiene la propiedad Parent con el objeto Padre (que en teoría ya
  ' destruímos si no supiéramos que sigue activo en este lugar), y
  ' Parent (Padre) tiene la propiedad que hace referencia a Hijo,
  ' el objeto no se destruye, SÓLO la instancia guardada en Hijo
  '
  Set Hijo = Nothing
End Sub

Como verás, este es un claro ejemplo de referencias circulares. Lo que sucede cuando eliminamos TODAS nuestras instancias conocidas como hicimos con la variable Padre e Hijo, en memoria sigue existiendo al menos una instancia de cada una, e indestructibles porque cada una hace referencia a la otra.

Hay que tener mucho cuidado con esto a la hora de usar referencias circulares, y en todo caso si una clase se va a crear recursivamente evitar este tipo de prácticas porque podríamos ocupar grandes cantidades de memoria.

De todas formas, TODOS los objetos se destruyen -sí o sí- cuando el proceso se cierra, porque están guardados siempre en el espacio de direcciones de memoria de este proceso.

Saludos.


« Última modificación: 17 Enero 2008, 03:37 am por Seykron » En línea

nuevopirata

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: ciclo de vida de un objeto
« Respuesta #2 en: 17 Enero 2008, 15:23 pm »

gracias amigo por tu respueta tratare de comprender ya que soy nuevo en vb estoy viendo vb en este semestre, muchisimas gracias por tu ayuda dios te brinde el doble de lo que das.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con un ciclo
Java
xAgramonx 3 3,224 Último mensaje 25 Noviembre 2010, 19:30 pm
por xAgramonx
Ayuda con función en ciclo FOR, nadieee ????
PHP
mokoMonster 5 3,884 Último mensaje 30 Enero 2011, 15:38 pm
por ~ Yoya ~
Proyecto de fin de ciclo
Foro Libre
Khronos14 5 4,068 Último mensaje 31 Marzo 2011, 23:49 pm
por Jake Logan
¿Pregunta de C++, Ciclo FOR?
Programación C/C++
Zodiak98 3 2,240 Último mensaje 1 Abril 2013, 17:03 pm
por zonahurbana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines