El documento describe objetos y arreglos en C#. La clase object hereda de todos los demás tipos y permite almacenar objetos en contenedores. Los arreglos son contenedores que permiten guardar múltiples objetos, usando índices de 0 a n-1. El documento también explica que los arreglos almacenan referencias a los objetos, no los objetos mismos, y que es necesario crear cada objeto manualmente.
2. Objetos en C#
• En C# existe una clase llamada “object”, la cual
hereda a todos los demás elementos.
• Esto nos permite almacenar más fácilmente
objetos en contenedores.
• Veamos el siguiente código
2Mtl. Lourdes Cahuich
3. object o = new int();
o = new float();
o = new DayOfWeek();
o = new Form();
3Mtl. Lourdes Cahuich
4. Los objetos pueden guardar cualquier
cosa
• Usando la clase “object” es una forma sencilla
de convertir tipos de valores o estructuras
propias, en tipos de referencia.
• Esto se debe a que “object” puede usarse
como una caja para guardar tipos de valores.
• Siempre que guardamos un tipo de valor en
un “object”, el objeto inmediatamente aparta
memoria para el tipo de valor, y se apunta a sí
mismo a la nueva memoria.
4Mtl. Lourdes Cahuich
5. Para que quede más claro, veamos el
siguiente código:
int x = 10;
object o = x; //o es una referencia a una copia del entero 10
x = 20; //cambio en x; o no debe cambiar ya que fue copiado
x = (int)o; //desempacamos o, x ahora tiene un 10 de nuevo
x: 10
0:
dirección
10
apunta a
5Mtl. Lourdes Cahuich
6. Arreglos
• Recordemos que los arreglos son
contenedores que nos permiten guardar
varios objetos en ellos.
6Mtl. Lourdes Cahuich
7. Ejemplo básico de arreglo
int[] arreglo = new int[10];
arreglo[0] = 0; //el primer elemento es 0
arreglo[1] = 10; //el segundo elemento es 10
arreglo[2] = 20;
arreglo[3] = 30;
arreglo[4] = 40;
arreglo[5] = 50;
arreglo[6] = 60;
arreglo[7] = 70;
arreglo[8] = 80;
arreglo[9] = 90; //el último elemento es 90
7Mtl. Lourdes Cahuich
8. • Recordemos que los arreglos usan índices con
base cero, lo que significa que el primer
objeto siempre tiene el índice 0, en lugar
comenzar con 1.
• Esto indica que el arreglo anterior tiene
índices válidos de 0 a 9, 10 no es válido.
8Mtl. Lourdes Cahuich
9. • Cuando escribimos el código
int [] a;
• Nos dice que estamos creando una variable
llamada “a”, la cual es una referencia a un
arreglo de enteros.
9Mtl. Lourdes Cahuich
10. • Todos los arreglos tienen referencia a un tipo
de datos, lo cual significa que debemos
siempre usar la palabra clave “new” para crear
un arreglo.
a=new int[6];
• Esta línea de código crea un arreglo nuevo de
ocho enteros, como se muestra a
continuación:
10Mtl. Lourdes Cahuich
12. Ejemplo de código para usar arreglos
void arreglo()
{
int[] a= new int[10];
int[] b = a;
b[0]=10;
int i = a[0];
b = null;
a = new int[20];
object c = a;
}
12Mtl. Lourdes Cahuich
13. Revisa el código anterior con cuidado
• ¿Qué es lo que ocurre en cada línea?
• Dibuja lo que pasa en la memoria y los valores
que hay en ella, línea por línea.
13Mtl. Lourdes Cahuich
14. void arreglo()
{
int[] a= new int[10];
int[] b = a;
b[0]=10;
int i = a[0];
b = null;
a = new int[20];
object c = a;
}
14Mtl. Lourdes Cahuich
15. Referencia versus Valores
• El arreglo de enteros que acabamos de ver, es
algo sencillo de comprender, pero ¿qué pasa
cuando creamos arreglos de objetos creados
por nosotros?
• Recordando los objetos que vimos la sesión
anterior, la siguiente línea de código:
NaveEspacialBase[] n = new NaveEspacialBase[5];
• ¿Con esto creamos un arreglo de 5 naves
espaciales?
15Mtl. Lourdes Cahuich
16. • La respuesta es, no.
• Se crea un arreglo de 5 referencias a objetos
tipo NaveEspacialBase
null
null
null
null
null
n
16Mtl. Lourdes Cahuich
17. Si agregamos estas líneas:
n[0] = new NaveEspacialBase();
n[2] = new NaveEspacialBase();
dir
null
dir
null
null
n nave
espacial
nave
espacial
17Mtl. Lourdes Cahuich
18. • Un arreglo realmente guarda referencias a
tipos de datos, y no los valores de dichos tipos
de datos.
• Hay que crear cada uno de los objetos
manualmente, o usar un ciclo de repetición
para crearlos todos.
18Mtl. Lourdes Cahuich
19. Ejercicio usando arreglos
• Crea un programa que le pida al usuario que
ingrese 8 números enteros.
• El programa usará arreglos para guardar los
números que escriba el usuario.
• Usará una función para regresar el número
más grande de dicho arreglo
• Mostrará al usuario el número más grande del
arreglo.
19Mtl. Lourdes Cahuich
20. Ejemplo función arreglo
public static int Mayor(int[] numeros) //Función que regresa el número
//mayor de un arreglo de enteros
{
// Primero asignamos al entero mayor el primer
// elemento del array
int mayor = numeros[0];
//Ahora recorremos el array como en el ejemplo 1
for (int i = 0; i < numeros.Length; i++)
// Vamos preguntando en cada posicion del array si el elemento que
//contiene es mayor que la variable "mayor".
if (numeros[i] > mayor)
// Si se cumple, entonces asignamos a mayor este nuevo elemento.
mayor = numeros[i];
// Cuando terminamos de recorrer el array, retornamos la variable mayor.
return mayor;
}
20Mtl. Lourdes Cahuich
21. Enviar al docente:
• Diagrama de clases para resolver el problema
• Lógica de cada clase
• Código C# funcionando (todo el subdirectorio
de la solución o todos los archivos con
extensión .cs -los otros archivos no tienen el
código para revisar el proyecto)
Mtl. Lourdes Cahuich 21