En el paradigma de la programación orientada a objetos (POO) un constructor es un trozo de código, un conjunto de instrucciones o subrutinas que se ejecutan siempre al inicializar un objeto de una clase, tiene similitudes con los métodos en que se les puede pasar parámetros, sin embargo a diferencia de éstos, nunca devuelven un valor, es decir no tienen un valor de retorno, veamos un ejemplo, en este caso con el lenguaje C#
Manos a la obra
En Visual Studio creamos un proyecto en consola en .net o .net core, es indistinto, y creamos la clase articulo y su constructor:
public class articulo
{
public articulo()
{
Console.WriteLine("Esta linea se ejecuta desde el constructor");
}
}
Ahora desde la clase principal llamada Program en su método Main codificamos lo siguiente:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
articulo miArticulo = new articulo();
Console.ReadLine();
}
}
Lo que acabo de hacer es instanciar una clase, es decir crear un objeto de esa clase en la variable miArticulo. La estructura del proyecto queda como se muestra aquí:
Entonces procedo a ejecutar mi proyecto de Visual Studio con F5 y obtenemos el siguiente resultado:
Lo que ha ocurrido es que luego de ejecutar la línea 5 con el mensaje en consola "Hello World!" hemos instanciado a la clase artículo entonces el programa al crear esta instancia ha llamado automáticamente a su constructor y es por eso que vemos el mensaje "Esta línea se ejecuta desde el constructor" aunque en el método Main no esté codificada.
Este pequeño ejercicio nos sirve para ver cómo funciona un constructor en la práctica y cómo podemos definir uno, sin embargo tiene más utilidades, acompáñame a descubrirlas:
Sobrecarga
Al igual que los métodos, los constructores pueden sobrecargarse, esto quiere decir que pueden existir varios constructores con distintos parámetros, para hacer un ejemplo vamos a añadirle más complejidad a nuestra clase artículo:
public class articulo
{
public int id { get; set; }
public string name { get; set; }
public decimal price { get; set; }
public DateTime createDate { get; set; }
public articulo()
{
this.createDate = DateTime.Now;
}
public articulo(string name)
{
this.name = name;
}
}
Y nuestra clase principal de nuestro proyecto de consola quedaría así:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
articulo o = new articulo("Leche ideal 350ml pack x 6");
Console.WriteLine(string.Format("el producto se llama {0} y fue creado el {1}.",o.name,o.createDate));
Console.ReadLine();
}
}
Lo que hemos hecho es añadir unas propiedades a nuestra clase artículo como id, nombre, precio y fecha de creación y hacer una sobrecarga de constructores uno no recibe parámetros y el otro sí, recibe un nombre.
En cuanto a la clase Program en la línea resaltada hemos creado un nuevo objeto de la clase articulo, y le hemos ingresado el parámetro definido en el constructor en este caso el nombre del artículo.
Finalmente mostramos en consola un mensaje concatenado con el método String.Format donde queremos imprimir el nombre y la fecha de creación, nótese que en ningún momento le hemos pasado la fecha de creación.
Corramos el proyecto:
Se nos muestra el nombre con el que inicializamos el objeto! mas no la fecha de creación y es porque en la clase artículo en el constructor, le estamos definiendo "por debajo" el nombre por así decirlo (ver línea resaltada de la clase articulo arriba).
Ahora te toca a ti, haz una prueba, crea un objeto de la clase artículo y no le pases ningún parámetro a ver qué sale:
Tendrías que haber obtenido algo similar a esta imagen:
Como no le pasaste parámetros el programa automáticamente hace uso del constructor adecuado, es decir el que no tiene parámetros y por lo tanto no tiene ningún nombre pero sí una fecha 😉
Para complementar: No hace falta que le crees constructores a todas tus clases, ya que el programa si detecta su ausencia creará uno por defecto sin instrucciones ni parámetros.
Ahora es tu turno, haz ejercicios de constructores y utilízalos junto con herencia por ejemplo, conmigo será hasta un nuevo post, en donde a partir de ahora estarán en la categoría C# Basics, nos vemos crack! 🤓
Si este contenido te ha servido o le puede servir a un amigo tuyo compártelo genio!
2 comentarios en «POO Basics: Qué son los constructores y su aplicación práctica con C#»