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
- Constructor per Defecte: No té paràmetres i s'invoca automàticament quan es crea un objecte si no es defineix cap altre constructor.
- Constructor Parametritzat: Accepta arguments per inicialitzar l'objecte amb valors específics.
- 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
Noma "Desconegut" iEdata 0. - Constructor Parametritzat: Inicialitza
NomiEdatamb 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
Recursoes 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.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització
