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
Nom
a "Desconegut" iEdat
a 0. - Constructor Parametritzat: Inicialitza
Nom
iEdat
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.
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ó