lunes, 4 de marzo de 2019

Constructores y destructores


¿Qué es un constructor en POO?

El objetivo de un constructor es el de inicializar un objeto cuando éste es creado. Asignaremos los valores iniciales, así como los procesos que ésta clase deba realizar.
Se utiliza para crear tablas de métodos virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos (POO). Al utilizar un constructor, el compilador determina cuál de los objetos va a responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis.

  • sintaxis:  
[atributos] [modificadores] <identificador> ([parámetros] ) [inicializador]
{
// Cuerpo del constructor.
}

  • Ejemplo: 

class Producto
{
private int clave;
private double precio;
public Producto (int c, double p)
{
clave = c;
precio = p;
}
public double daPrecio ( )
{
return precio;
}


¿Qué es el destructor?

Un destructor en algunos lenguajes de programación orientados a objetos es un método de una clase que se llama justo antes de una instancia de esa clase y se elimina de la memoria. No todos los lenguajes de programación orientados a objetos suelen tener un destructor.

La contrapartida de un destructor es un constructor que se ejecuta cuando se crea el objeto, se instancia y se lo inicializa.
  • Ejemplo: 

La sintaxis para declarar un destructor es:
[atributos] ~ <identificador> ()
{
// Cuerpo del destructor.
}
Notas:
Una clase solamente puede tener un destructor.
Los destructores no pueden heredarse o sobrecargarse.
Los destructores no pueden invocarse, sino que son invocados automáticamente.
Un destructor no acepta modificadores ni parámetros. Por ejemplo, la siguiente es una declaración de un destructor para la clase Figura:
~ Figura ()
{
// Instrucciones para limpiar.
}
El destructor llama implícitamente al método Object. Finaliza() en la clase base object. Por lo tanto, el código destructor precedente es traducido automáticamente a:
protector override void Finaliza ()
{
try
{
// Instrucciones para limpiar.
}
finally
{
base. Finaliza ();
}


        No hay comentarios.:

        Publicar un comentario