Anuncios

Bienvenidos sean a este post, hasta ahora hemos visto como de una clase podemos crear un objeto y este puede ser creado de varias formas por medio de un constructor, pero en realidad un objeto no deja de ser una variable y para ello vamos a ahondar un poco mas en este tema.

Anuncios

Para sumergirnos un poco mas en este tema vamos a crear un nuevo programa que llamaremos Clases.cs, para ello vamos crear el archivo e ingresar el siguiente codigo:

Nota: Recuerden que la buena practica recomienda hacerlo en archivos separados pero lo haremos asi por practicidad.

Clases.cs

using System;

class Clases
{
	int[] valores = new int[10];

	public void SetValores(int pos,int numero)
	{
		valores[pos] = numero;
	}

	public int GetValores(int pos)
	{
		return valores[pos];
	}

	public int Contar()
	{
		return valores.Length;
	}
}

class Program
{
	static int Main()
	{
		Clases numeros = new Clases();
		for(int i=0; i<10; i++)
		{
			numeros.SetValores(i,i*2);
		}

		for(int i=0; i<numeros.Contar(); i++)
		{
			Console.WriteLine(numeros.GetValores(i));
		}
		return 0;
	}
}
Anuncios

Para entender este codigo vamos a analizar primero a la clase llamada Clases:

class Clases
{
	int[] valores = new int[10];

	public void SetValores(int pos,int numero)
	{
		valores[pos] = numero;
	}

	public int GetValores(int pos)
	{
		return valores[pos];
	}

	public int Contar()
	{
		return valores.Length;
	}
}
Anuncios

En esta clase primero crearemos un array privado de tipo int llamado valores, el cual tendra solo 10 espacios, despues tendremos un metodo llamado SetValores que recibira dos valores, una para la posicion en el array y otro con el valor que ingresaremos, luego en el bloque agregaremos el dato en base al valor recibido en pos, nuestro siguiente metodo es GetValores que recibe un solo dato al cual lo usaremos para que devuelva el dato almacenado en valores en base a la posicion informada, por ultimo tenemos un metodo llamado Contar que devolvera la cantidad de elementos en valores, pasemos a ver como es Main:

	static int Main()
	{
		Clases numeros = new Clases();
		for(int i=0; i<10; i++)
		{
			numeros.SetValores(i,i*2);
		}

		for(int i=0; i<numeros.Contar(); i++)
		{
			Console.WriteLine(numeros.GetValores(i));
		}
		return 0;
	}
Anuncios

En este metodo crearemos un nuevo objeto de Clases llamados numeros, despues usaremos un bucle for que contara de 0 a 9 y llenara a valores en Clases gracias a SetValores, el valor que le asignaremos es el de i multiplicado por 2 y pos sera i, obviamente, una vez que termine el ciclo pasaremos al siguiente que se encargara de recuperar los valores, para este caso usaremos al metodo Contar para usarlo como limite para el bucle, despues en el bloque gracias a GetValores iremos recuperando los valores, compilemos y veamos su salida:

C:\Users\tinchicus\Documents\Visual Studio 2019>Clases
0
2
4
6
8
10
12
14
16
18

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

Como podemos ver funciono perfectamente pero vamos a hacer una modificacion a nuestro codigo anterior donde vamos a crear un nuevo objeto pero lo vamos a igualar con el anterior y para ello haremos lo siguiente:

Clases numeros2 = numeros;
Anuncios

Como el lenguaje es safe-type siempre el tipo de la variable que creamos debe ser igual al que le asignamos pero en este caso en particular al hacerle este procedimiento, es decir que creamos una variable y le asignamos una que teniamos, este procede a copiar toda la estructura y los datos, vamos a modificar el Main anterior de la siguiente forma:

	static int Main()
	{
		Clases numeros = new Clases();
		for(int i=0; i<10; i++)
		{
			numeros.SetValores(i,i*2);
		}
		Clases numeros2 = numeros;

		for(int i=0; i<numeros2.Contar(); i++)
		{
			Console.WriteLine(numeros2.GetValores(i));
		}
		return 0;
	}
Anuncios

Es exactamente lo mismo a lo visto anteriormente pero en este caso creamos el nuevo objeto (numeros2) y lo igualamos con numeros, despues modificamos el segundo bucle donde reemplazamos a numeros por numeros2, si lo compilamos y probamos sucedera lo siguiente:

C:\Users\tinchicus\Documents\Visual Studio 2019>Clases
0
2
4
6
8
10
12
14
16
18

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

En esta salida vemos que quedo exactamente igual al anterior y esto sucedio lo que comentamos antes, es decir que cuando asignamos el primer objeto al objeto nuevo, en realidad no copia la estructura y datos sino que en realidad copia la referencia de memoria (direccion de memoria), por ende ambos acceden a la misma direccion de memoria en el momento de trabajar.

Anuncios

Con esto hemos cubierto que un objeto que creamos desde una clase no deja de ser mas que una variable personalizada, es decir que va a ser una variable con los tipos de datos que nosotros creamos, y si bien por un tema de practicidad cuando trabajamos nos referimos a objetos pero en el fondo no dejan ser variables de tipo referencia pero de eso hablaremos en otro post.

Anuncios
Nota: C# siempre trabaja con los mismos tipos, es decir si una variable es de tipo string el valor despues del igual debe ser string, en caso de usar una clase especial el valor a asignar debe ser de ese tipo, si bien vimos que podemos convertir string en int, por ejemplo, en el caso de las clases es un poco mas dificil de hacer.
Anuncios

En resumen, hoy hemos visto que es una variable de una clase, que es en realidad, como se crea, como se puede copiar, para que nos puede servir, y como trabaja de manera similar a otra forma de manipular informacion en lenguajes de tipo C, espero le shaya 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 $