objetos y arreglos en c#

21
Objetos y arreglos Apoyo C#

Upload: uvm

Post on 18-Jul-2015

277 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Objetos y arreglos en C#

Objetos y arreglos

Apoyo C#

Page 2: Objetos y arreglos en 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

Page 3: Objetos y arreglos en C#

object o = new int();

o = new float();o = new DayOfWeek();o = new Form();

3Mtl. Lourdes Cahuich

Page 4: Objetos y arreglos en C#

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

Page 5: Objetos y arreglos en C#

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

Page 6: Objetos y arreglos en C#

Arreglos

• Recordemos que los arreglos son contenedores que nos permiten guardar varios objetos en ellos.

6Mtl. Lourdes Cahuich

Page 7: Objetos y arreglos en C#

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

Page 8: Objetos y arreglos en C#

• 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

Page 9: Objetos y arreglos en C#

• 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

Page 10: Objetos y arreglos en C#

• 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

Page 11: Objetos y arreglos en C#

a 0

0

0

0

0

0

11Mtl. Lourdes Cahuich

Page 12: Objetos y arreglos en C#

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

Page 13: Objetos y arreglos en C#

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

Page 14: Objetos y arreglos en C#

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

Page 15: Objetos y arreglos en C#

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

Page 16: Objetos y arreglos en C#

• La respuesta es, no.

• Se crea un arreglo de 5 referencias a objetos tipo NaveEspacialBase

null

null

null

null

null

n

16Mtl. Lourdes Cahuich

Page 17: Objetos y arreglos en C#

Si agregamos estas líneas:

n[0] = new NaveEspacialBase();n[2] = new NaveEspacialBase();

dir

null

dir

null

null

n naveespacial

naveespacial

17Mtl. Lourdes Cahuich

Page 18: Objetos y arreglos en C#

• 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

Page 19: Objetos y arreglos en C#

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

Page 20: Objetos y arreglos en C#

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

Page 21: Objetos y arreglos en C#

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