Introducció

En aquest tema, explorarem els constructors i destructors en C#. Els constructors són mètodes especials que s'executen quan es crea una instància d'una classe, mentre que els destructors s'executen quan l'objecte es destrueix. Aquests conceptes són fonamentals per a la gestió de la inicialització i la neteja dels objectes.

Constructors

Què és un Constructor?

Un constructor és un mètode especial que té el mateix nom que la classe i no té cap tipus de retorn, ni tan sols void. S'utilitza per inicialitzar els objectes d'una classe.

Tipus de Constructors

  1. Constructor per Defecte: No té paràmetres i s'invoca automàticament quan es crea un objecte si no es defineix cap altre constructor.
  2. Constructor Parametritzat: Accepta arguments per inicialitzar l'objecte amb valors específics.
  3. Constructor Estàtic: S'executa una sola vegada per a tota la classe, independentment del nombre d'objectes creats.

Exemple de Constructors

using System;

public class Persona
{
    public string Nom { get; set; }
    public int Edat { get; set; }

    // Constructor per defecte
    public Persona()
    {
        Nom = "Desconegut";
        Edat = 0;
    }

    // Constructor parametritzat
    public Persona(string nom, int edat)
    {
        Nom = nom;
        Edat = edat;
    }

    // Constructor estàtic
    static Persona()
    {
        Console.WriteLine("Constructor estàtic invocat.");
    }

    public void MostrarInformacio()
    {
        Console.WriteLine($"Nom: {Nom}, Edat: {Edat}");
    }
}

class Program
{
    static void Main()
    {
        Persona persona1 = new Persona();
        persona1.MostrarInformacio();

        Persona persona2 = new Persona("Joan", 30);
        persona2.MostrarInformacio();
    }
}

Explicació del Codi

  • Constructor per Defecte: Inicialitza Nom a "Desconegut" i Edat a 0.
  • Constructor Parametritzat: Inicialitza Nom i Edat amb els valors proporcionats.
  • Constructor Estàtic: S'executa una sola vegada quan es carrega la classe Persona.

Destructors

Què és un Destructor?

Un destructor és un mètode especial que s'executa quan un objecte es destrueix. En C#, els destructors s'utilitzen principalment per netejar recursos no gestionats.

Sintaxi del Destructor

Un destructor té el mateix nom que la classe, precedit per una tilde (~), i no té paràmetres ni tipus de retorn.

Exemple de Destructor

using System;

public class Recurso
{
    // Constructor
    public Recurso()
    {
        Console.WriteLine("Recurso creat.");
    }

    // Destructor
    ~Recurso()
    {
        Console.WriteLine("Recurso destruït.");
    }
}

class Program
{
    static void Main()
    {
        Recurso recurso = new Recurso();
    }
}

Explicació del Codi

  • Constructor: S'executa quan es crea una instància de Recurso.
  • Destructor: S'executa quan l'objecte Recurso es destrueix, generalment quan el recollidor d'escombraries (Garbage Collector) allibera la memòria.

Exercicis Pràctics

Exercici 1: Crear una Classe amb Constructors

Descripció: Crea una classe Cotxe amb un constructor per defecte i un constructor parametritzat. La classe ha de tenir propietats per Marca i Model.

Solució:

public class Cotxe
{
    public string Marca { get; set; }
    public string Model { get; set; }

    // Constructor per defecte
    public Cotxe()
    {
        Marca = "Desconeguda";
        Model = "Desconegut";
    }

    // Constructor parametritzat
    public Cotxe(string marca, string model)
    {
        Marca = marca;
        Model = model;
    }

    public void MostrarInformacio()
    {
        Console.WriteLine($"Marca: {Marca}, Model: {Model}");
    }
}

class Program
{
    static void Main()
    {
        Cotxe cotxe1 = new Cotxe();
        cotxe1.MostrarInformacio();

        Cotxe cotxe2 = new Cotxe("Toyota", "Corolla");
        cotxe2.MostrarInformacio();
    }
}

Exercici 2: Implementar un Destructor

Descripció: Afegeix un destructor a la classe Cotxe que imprimeixi un missatge quan l'objecte es destrueix.

Solució:

public class Cotxe
{
    public string Marca { get; set; }
    public string Model { get; set; }

    // Constructor per defecte
    public Cotxe()
    {
        Marca = "Desconeguda";
        Model = "Desconegut";
    }

    // Constructor parametritzat
    public Cotxe(string marca, string model)
    {
        Marca = marca;
        Model = model;
    }

    // Destructor
    ~Cotxe()
    {
        Console.WriteLine($"El cotxe {Marca} {Model} ha estat destruït.");
    }

    public void MostrarInformacio()
    {
        Console.WriteLine($"Marca: {Marca}, Model: {Model}");
    }
}

class Program
{
    static void Main()
    {
        Cotxe cotxe1 = new Cotxe();
        cotxe1.MostrarInformacio();

        Cotxe cotxe2 = new Cotxe("Toyota", "Corolla");
        cotxe2.MostrarInformacio();
    }
}

Resum

En aquest tema, hem après sobre constructors i destructors en C#. Els constructors s'utilitzen per inicialitzar objectes, mentre que els destructors s'utilitzen per netejar recursos quan els objectes es destrueixen. Hem vist exemples pràctics de constructors per defecte, constructors parametritzats i destructors, i hem practicat aquests conceptes amb exercicis.

En el següent tema, explorarem la Herència, un concepte clau en la programació orientada a objectes.

© Copyright 2024. Tots els drets reservats