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
- Constructor por Defecto: No toma parámetros.
- Constructor Parametrizado: Toma uno o más parámetros.
- 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
- Crea una clase llamada
Coche
con los siguientes campos:Marca
,Modelo
yAño
. - Implementa un constructor parametrizado que inicialice estos campos.
- 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
- Crea una clase llamada
Libro
con los campos:Titulo
,Autor
yPaginas
. - Implementa un constructor por defecto que inicialice los campos con valores predeterminados.
- 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.
Curso de Programación en C#
Módulo 1: Introducción a C#
- Introducción a C#
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control
Módulo 3: Programación Orientada a Objetos
- Clases y Objetos
- Métodos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Conceptos Avanzados de C#
- Interfaces
- Delegados y Eventos
- Genéricos
- Colecciones
- LINQ (Consulta Integrada en el Lenguaje)
- Programación Asíncrona
Módulo 5: Trabajando con Datos
Módulo 6: Temas Avanzados
- Reflexión
- Atributos
- Programación Dinámica
- Gestión de Memoria y Recolección de Basura
- Multihilo y Programación Paralela
Módulo 7: Construcción de Aplicaciones
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Estándares de Codificación y Mejores Prácticas
- Patrones de Diseño
- Pruebas Unitarias
- Revisión y Refactorización de Código