Anuncios
Anuncios

Bienvenidos sean a este post, hoy vamos a ver un tema que si bien no siempre esta a la vista pero siempre existen, en el post anterior los mencionamos pero hoy hablaremos sobre estos metodos heredados de C y trabajan exactamente de la misma forma, comencemos con lo mas basico.

El constructor es el metodo encargado de generar el lugar en memoria de nuestro objeto, en su forma mas basica o tambien llamado Constructor predeterminado es de la siguiente forma:

public NombreClase() {}

Esta es su forma mas basica y siempre es creado por el lenguaje aunque no lo veamos en el codigo, de esta forma lo unico que nos garantiza es que el compilador encuentra el lugar asignado para que el objeto pueda trabajar, siempre los constructores van a llevar el nombre de la clase, por ejemplo si tuvieramos una clase llamada Alumno su constructor predeterminado sera:

public Alumno() {}
Anuncios

El constructor a su vez nos brinda otras posibilidades como iniciar variables, poder iniciar objetos, llamar metodos, es decir que en un constructor podemos no hacer nada o hacer alguna tarea que necesitemos al crear el objeto, otra ventaja de los constructores es que no es solo uno sino pueden ser todos los que necesitemos, tomemos como ejemplo el codigo del post anterior y modifiquemos a la clase Perro de la siguiente forma:

Perro.cs

    class Perro
    {
        public string nombre;
        public int edad, peso;

        public Perro() {}
        public Perro(int x, int y, string z)
        {
            nombre = z;
            edad = x;
            peso = y;
        }
        public string Ladrar()
        {
            return "Guau!!!";
        }
    }
Anuncios

En este caso vamos a tener tres nuevas variables, una de tipo string para el nombre, y dos de tipo int para la edad y otra para el peso, despues pondremos el constructor predeterminado y luego agregaremos un constructor con tres argumentos, el primero lo usaremos para edad y lo llamaremos x, luego otro para peso llamado y, y el ultimo sera z para nombre, observen como dentro del bloque asignamos los valores a las variables antes creadas, pasemos a hacer una simple modificacion en el codigo de Main de la clase Animal.cs:

Nota: el modificador public es lo que permite acceder a estas variables desde otras clases, si lo omiten el programa asume que son intenarl (internas) y no concedera acceso, mas adelante hablaremos sobre los modificadores.

Animal.cs

using System;

class Program
{
	static void Main(string[] args)
	{
		Perro fido = new Perro();
		Perro arturo = new Perro(4,30,"Arturo");
		Perro lola = new Perro(5,25,"Lola");
		Console.WriteLine(fido.nombre + " dice " + fido.Ladrar());
		Console.WriteLine(arturo.nombre + " tiene " + arturo.edad 
		    + " y dice " + arturo.Ladrar());
		Console.WriteLine(lola.nombre + " pesa " + lola.peso 
		    + " y dice " + lola.Ladrar());
	}
}
Anuncios

En este caso tendremos los tres objetos pero en el primero seguiremos usando el constructor predeterminado, en los siguientes dos casos usaremos el nuevo contructor, luego volveremos a escribir en consola primero el valor de nombre para fido, luego el nombre de arturo y su edad, y por ultimo el nombre de lola y su peso, en todos los casos le hacemos llamar a Ladrar, compilemos el programa y probemos para ver su salida:

Nota: Recuerden que para compilar deben usar:
csc /out:Animal.exe *.cs
En el post anterior lo explicamos
C:\Users\tinchicus\Documents\Visual Studio 2019\A>animal
 dice Guau!!!
Arturo tiene 4 y dice Guau!!!
Lola pesa 25 y dice Guau!!!

C:\Users\tinchicus\Documents\Visual Studio 2019\A>
Anuncios

Observen como en el primer caso al usar el constrcutor predeterminado la variable nombre no posee ningun valor y por ende no mostro nada, en el segundo caso vemos el valor de nombre y edad, para el tercer caso tenemos el mismo caso salvo que en lugar de mostrar el valor de edad es peso, una de las ventajas de trabajar con objetos es justamente esto porque cada objeto es independiente del otro y no se superponen unos con otros, veamos el siguiente ejemplo para ver un poco mas de constructores y otros detalles mas, para ello vamos a crear una nuevo programa llamado Lista, para eso primero vamos a crear la clase Persona.cs:

Personas.cs

using System;
using System.Collections.Generic;

class Personas
{
	List<string> listado;

	public Personas()
	{
		listado = new List<string>();
	}

	public void AgregarPersonas(string nombre)
	{
		listado.Add(nombre);
	}

	public string Recuperar(int i)
	{
		return listado[i];
	}

	public int Contar()
	{
		return listado.Count;
	}
}
Anuncios

En esta clase crearemos un nuevo tipo de dato para nuestra clase maestra, en esta primero crearemos una objeto de tipo List que sera para crear una lista de tipo String pero no la iniciaremos sino simplemente la declaramos, luego tendremos un constructor predeterminado donde se encargara de iniciar a nuestra lista cuando se llama al constructor, basicamente reservara el lugar en la memoria, veamos el siguiente metodo:

public void AgregarPersonas(string nombre)
{
    listado.Add(nombre);
}
Anuncios

En este caso sera para agregar nuevos elementos en nuestra lista, para este metodo recibiremos un dato que sera el nombre de la persona, en el bloque usaremos el metodo Add para la lista y le enviaremos el valor informado en nombre, veamos el siguiente metodo:

public string Recuperar(int i)
{
    return listado[i];
}
Anuncios

Este metodo se encaragara de recuperar los elementos de la lista, para recibir como argumento un numero de tipo int, cuando veamos el otro codigo lo entenderemos, despues simplemente por medio de return devuelve el elemento de listado en la posicion solicitada por medio de i, analicemos el ultimo metodo:

public int Contar()
{
    return listado.Count;
}

Este se encargara de contar todos los elementos de listado, para ello devuelve por medio de la propiedad Count la cantidad de elementos de listado, y con esto terminamos con la clase Personas pasemos a la clase principal:

Lista.cs

using System;

class Program
{
	static int Main()
	{
		Personas persona = new Personas();
		persona.AgregarPersonas("Martin Miranda");
		persona.AgregarPersonas("Enzo Tortore");
		persona.AgregarPersonas("Marta Gargaglione");
		for(int i=0; i<persona.Contar(); i++)
		{
			Console.WriteLine(persona.Recuperar(i));
		}
		return 0;
	}
}
Anuncios

En este caso primero crearemos un objeto del tipo Personas llamado persona y por medio de new llamaremos al constructor y crearemos el nuevo objeto, nuestra siguientes tres lineas se encargaran de agregar tres personas al objeto persona, que es lo mismo que decir a nuestra lista de la clase anterior, despues tendremos el siguiente bloque:

for(int i=0; i<persona.Contar(); i++)
{
    Console.WriteLine(persona.Recuperar(i));
}
Anuncios

Este bloque se encargara de recuperar todos los elementos almacenados en persona, para ello usamos primero a Contar para que sea el limite de nuestro ciclo for, lo bueno de usarlo de esta forma es que si quieren pueden agregar mas personas o menos personas y el ciclo for siempre va a funcionar, la linea del bloque se encarga de recuperar por medio del metodo Recuperar a la persona y el valor que informamos es el de i que equivale a las posiciones del listado, si lo probamos deberemos tener un resultado como este:

C:\Users\tinchicus\Documents\Visual Studio 2019\B>lista
Martin Miranda
Enzo Tortore
Marta Gargaglione

C:\Users\tinchicus\Documents\Visual Studio 2019\B>
Anuncios

Como pueden observar obtuvimos el listado de nuestras 3 personas en la lista, permitiendo tener una lista de personas pero vimos como los constructores predeterminados tambien nos permiten realizar otras tareas internamente.

Nota: Mas adelante hablaremos sobre este tipo de datos llamado colecciones.
Anuncios

En resumen, hoy hemos hablado sobre constructores, su sintaxis, como el lenguaje lo genera automaticamente en caso de no informarlo, como podemos tener varios y no se ven afectados entre si, un poco de override (sobrecarga), los beneficios de tener varios constructores, algunos ejemplos, un ejemplo donde pusimos varias practicas en uso, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00