objetos y arreglos en c#
Post on 18-Jul-2015
282 Views
Preview:
TRANSCRIPT
Objetos y arreglos
Apoyo C#
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
object o = new int();
o = new float();o = new DayOfWeek();o = new Form();
3Mtl. Lourdes Cahuich
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
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 10x = 20; //cambio en x; o no debe cambiar ya que fue copiadox = (int)o; //desempacamos o, x ahora tiene un 10 de nuevo
x: 10
0: dirección
10apunta a
5Mtl. Lourdes Cahuich
Arreglos
• Recordemos que los arreglos son contenedores que nos permiten guardar varios objetos en ellos.
6Mtl. Lourdes Cahuich
Ejemplo básico de arreglo
int[] arreglo = new int[10];arreglo[0] = 0; //el primer elemento es 0arreglo[1] = 10; //el segundo elemento es 10arreglo[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
• 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
• 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
• 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
a 0
0
0
0
0
0
11Mtl. Lourdes Cahuich
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
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
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
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
• La respuesta es, no.
• Se crea un arreglo de 5 referencias a objetos tipo NaveEspacialBase
null
null
null
null
null
n
16Mtl. Lourdes Cahuich
Si agregamos estas líneas:
n[0] = new NaveEspacialBase();n[2] = new NaveEspacialBase();
dir
null
dir
null
null
n naveespacial
naveespacial
17Mtl. Lourdes Cahuich
• 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
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
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 arrayint mayor = numeros[0];//Ahora recorremos el array como en el ejemplo 1for (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
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
top related