Introducción

En este tema, aprenderemos sobre los constructores y destructores en C#. Estos son conceptos fundamentales en la Programación Orientada a Objetos (POO) que permiten inicializar y limpiar objetos de manera eficiente.

Constructores

¿Qué es un Constructor?

Un constructor es un método especial que se llama automáticamente cuando se crea una instancia de una clase. Su principal función es inicializar los datos del objeto.

Características de los Constructores

  • Nombre del Constructor: Debe tener el mismo nombre que la clase.
  • No tiene tipo de retorno: Ni siquiera void.
  • Se puede sobrecargar: Puedes tener múltiples constructores con diferentes parámetros.

Ejemplo de Constructor

public class Persona
{
    public string Nombre;
    public int Edad;

    // Constructor
    public Persona(string nombre, int edad)
    {
        Nombre = nombre;
        Edad = edad;
    }
}

En este ejemplo, el constructor Persona inicializa los campos Nombre y Edad.

Tipos de Constructores

  1. Constructor por Defecto: No toma parámetros.
  2. Constructor Parametrizado: Toma uno o más parámetros.
  3. Constructor Estático: Se usa para inicializar miembros estáticos de la clase.

Constructor por Defecto

public class Persona
{
    public string Nombre;
    public int Edad;

    // Constructor por defecto
    public Persona()
    {
        Nombre = "Desconocido";
        Edad = 0;
    }
}

Constructor Parametrizado

public class Persona
{
    public string Nombre;
    public int Edad;

    // Constructor parametrizado
    public Persona(string nombre, int edad)
    {
        Nombre = nombre;
        Edad = edad;
    }
}

Constructor Estático

public class Configuracion
{
    public static string ConfiguracionGlobal;

    // Constructor estático
    static Configuracion()
    {
        ConfiguracionGlobal = "Valor por defecto";
    }
}

Destructores

¿Qué es un Destructor?

Un destructor es un método especial que se llama automáticamente cuando un objeto es destruido o recolectado por el recolector de basura. Su principal función es liberar recursos no administrados.

Características de los Destructores

  • Nombre del Destructor: Tiene el mismo nombre que la clase, precedido por una tilde (~).
  • No tiene parámetros ni tipo de retorno.
  • No se puede sobrecargar ni llamar explícitamente.

Ejemplo de Destructor

public class Persona
{
    public string Nombre;
    public int Edad;

    // Constructor
    public Persona(string nombre, int edad)
    {
        Nombre = nombre;
        Edad = edad;
    }

    // Destructor
    ~Persona()
    {
        // Código para liberar recursos
    }
}

En este ejemplo, el destructor ~Persona se llama automáticamente cuando el objeto Persona es destruido.

Ejercicio Práctico

Ejercicio 1: Crear una Clase con Constructor y Destructor

  1. Crea una clase llamada Coche con los siguientes campos: Marca, Modelo y Año.
  2. Implementa un constructor parametrizado que inicialice estos campos.
  3. Implementa un destructor que imprima un mensaje indicando que el objeto está siendo destruido.

Solución

public class Coche
{
    public string Marca;
    public string Modelo;
    public int Año;

    // Constructor parametrizado
    public Coche(string marca, string modelo, int año)
    {
        Marca = marca;
        Modelo = modelo;
        Año = año;
    }

    // Destructor
    ~Coche()
    {
        Console.WriteLine("El objeto Coche está siendo destruido.");
    }
}

Ejercicio 2: Crear una Clase con Constructor por Defecto y Parametrizado

  1. Crea una clase llamada Libro con los campos: Titulo, Autor y Paginas.
  2. Implementa un constructor por defecto que inicialice los campos con valores predeterminados.
  3. Implementa un constructor parametrizado que inicialice los campos con valores proporcionados.

Solución

public class Libro
{
    public string Titulo;
    public string Autor;
    public int Paginas;

    // Constructor por defecto
    public Libro()
    {
        Titulo = "Desconocido";
        Autor = "Desconocido";
        Paginas = 0;
    }

    // Constructor parametrizado
    public Libro(string titulo, string autor, int paginas)
    {
        Titulo = titulo;
        Autor = autor;
        Paginas = paginas;
    }
}

Conclusión

En esta sección, hemos aprendido sobre los constructores y destructores en C#. Los constructores son esenciales para inicializar objetos, mientras que los destructores ayudan a liberar recursos no administrados. Estos conceptos son fundamentales para escribir código eficiente y bien estructurado en C#. En el próximo tema, exploraremos la herencia, otro pilar de la Programación Orientada a Objetos.

© Copyright 2024. Todos los derechos reservados