La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Manejo de grupos de atributos Giovanni Hernández P. Nivel 3.

Presentaciones similares


Presentación del tema: "Manejo de grupos de atributos Giovanni Hernández P. Nivel 3."— Transcripción de la presentación:

1 Manejo de grupos de atributos Giovanni Hernández P. Nivel 3

2 CASO DE ESTUDIO Las notas de un curso Enunciado Se necesita crear una aplicación para manejar las notas para un curso. El curso es visto por doce (12) estudiantes. Para cada estudiante se debe poder registrar la nota definitiva que sacó en el curso. Adicionalmente, la aplicación debe permitir calcular el promedio del curso, y el número de estudiantes que tienen una nota por encima del promedio.

3 Requerimientos Funcionales

4 Contenedoras de tamaño fijo Curso double nota1 double nota2 double nota3 double nota4 double nota5 double nota6 double nota7 double nota8 double nota9 double nota10 double nota11 double nota12 Solución

5 Contenedoras de tamaño fijo … Atributo que es capaz de agrupar una secuencia de valores se denomina contenedor Curso double notas = 0 1 2 3 4 5 6 7 8 9 10 11

6 Declaración de un arreglo En Java las estructuras contenedoras de tamaño fijo se denominan arreglos (array) public class Curso { public final static int TOTAL_EST = 12; private double[] notas; }

7 Inicialización de un arreglo // Construtor public Curso() { notas = new double[TOTAL_EST]; } (length): en los arreglos permite consultar el numero que estos contienen. Ej. nota.length

8 Acceso a los elementos del arreglo Indice: sirve para indicar la posición de un elemento en un arreglo. Van desde 0 hasta el numero de elementos – 1 Para tomar o modificar un elemento del arreglo se da el índice Sintaxis [ ]

9 Instrucciones repetitivas Puede repetirse un paso (instrucción) que va transformando gradualmente el mundo del problema. Ej. Cuando subimos unas escaleras

10 Instrucciones repetitivas… Taller No 1.

11 Instrucciones repetitivas… Ej. En una hoja de papel con una lista de palabras, buscar si la palabra “casa” esta en la lista. 1.Verificar si la primera palabra es igual a “casa”. 2.Si lo es no busque mas. Si no lo es busque en la segunda palabra. 3.Verificar si la segunda palabra es igual a “casa”. 4.Si lo es no busque mas. Si no lo es busque en la tercera palabra. 5.Repita el procedimiento palabra por palabra, hasta que la encuentre o hasta que no existan mas palabras por buscar.

12 Instrucciones repetitivas… Calcular el promedio de las notas (R2 – Calcular el promedio de las notas) public double promedio() { double suma = nota[0] + nota[1] + nota[2] + nota[3] + nota[4] + nota[5] + nota[6] + nota[7] + nota[8] + nota[9] + nota[10] + nota[11]; return suma / TOTAL_EST; }

13 Instrucciones repetitivas… Solución de manera iterativa public double promedio() { double suma = 0.0 int indice = 0; suma += nota[ indice ]; indice ++; suma += nota[ indice ]; indice ++; suma += nota[ indice ]; indice ++; suma += nota[ indice ]; indice ++; suma += nota[ indice ]; indice ++; …… }

14 Instrucciones repetitivas… Public double promedio() { double suma = 0.0; int indice = 0; while ( indice < TOTAL_EST) { suma += nota[ indice ]; indice ++; }

15 Instrucciones repetitivas… Componentes de una instrucción repetitiva Preparación del ciclo La condición es verdadera ? Ejecuta las instrucciones del cuerpo del ciclo Si No Termina el ciclo While ( ) { } inicio

16 Instrucciones repetitivas… Taller No 2

17 Ej. NombreR7-Calcular el numero de notas por encima del promedio ResumenCalcula y retorna el numero de notas que están por encima del promedio Entradas Promedio Resultados Calcula y retorna el numero de notas por encima del promedio. Método de la clase Curso

18 Ej. NombreR8-Calcular el numero de estudiantes que aprobaron el curso ResumenCalcula y retorna el numero de estudiantes que aprobaron el curso por que su nota final es superior o igual a 3.0 Entradas Ninguna Resultados Calcula y retorna el numero de estudiantes que aprobaron el curso. Método de la clase Curso

19 Ej. NombreR9-Calcular el numero de estudiantes que reprobaron el curso ResumenCalcula y retorna el numero de estudiantes que reprobaron el curso por que su nota final es inferior a 3.0 Entradas Ninguna Resultados Calcula y retorna el numero de estudiantes que reprobaron el curso. Método de la clase Curso

20 Ej. NombreR9-Calcular la nota mas alta del curso ResumenCalcula y retorna la nota mas alta del curso Entradas Ninguna Resultados Calcula y retorna la nota mas alta del curso Método de la clase Curso

21 Ej. NombreR9-Calcular la nota mas baja del curso ResumenCalcula y retorna la nota mas baja del curso Entradas Ninguna Resultados Calcula y retorna la nota mas bajo del curso Método de la clase Curso

22 Patrones de algoritmo para instrucciones repetitivas Patrón de un algoritmo Patrón de recorrido total: Recorrer todos los elementos de la contenedora. Ejemplos: Calcular la suma de todas las notas. Contar cuántos en el curso obtuvieron 3,5. Contar cuantos en el curso están por debajo del promedio.

23 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido total Solución 1.El índice para iniciar el ciclo debe estar en cero (0). 2.La condición para continuar es que el índice sea menor que la longitud del arreglo. 3.El avance consiste en sumarle uno (1) al índice.

24 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido total Código Java for( int indice = 0 ; indice < arreglo.length; indice++) { // cuerpo }

25 Patrones de algoritmo para instrucciones repetitivas NombreR9-Incrementar notas inferiores ResumenSe requiere incrementar en 10% todas las notas inferiores a 2,0. Entradas Ninguna Resultados Se ha incrementado en 10% todas las notas inferiores a 2,0. Primera variante del patrón

26 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido total-variante No 1 Public void incrementarNotasInferior() { for( int indice = 0 ; indice < notas.length; indice++) { // cuerpo if( notas[indice] < 2.0 ) { notas[indice] += notas[indice] * 0.1; }

27 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido total – Segunda variante Calcular alguna propiedad sobre el conjunto de elementos del arreglo. 1.¿Cómo acumular la información que se va llevando a medida que avanza el ciclo? 2.¿Cómo inicializar dicha información? 3.¿Cuál es la condición para modificar dicho acumulado ? 4.¿Cómo modificar el acumulado?

28 Patrones de algoritmo para instrucciones repetitivas NombreR10-Dar estudiantes aprobados ResumenSe requiere calcular y retornar el número de estudiantes que aprobaron el curso. Entradas Ninguna Resultados Se ha calculado y retornado el número de estudiantes que aprobaron el curso. Segunda variante del patrón

29 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido total-variante No 2 Public int darAprobados() { int vanAprobando = 0; for( int indice = 0 ; indice < notas.legth; indice++) { // cuerpo if( notas[i] >= 3.0 ) { vanAprobando ++; } return vanAprobando; } (1)(2) (3) (4)

30 Actividad Taller No 3 Taller No 31

31 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido parcial Una condición para verificar cada recorrido si se debe detener el ciclo o continuar Variable de tipo boolean. Usar en la condición del ciclo la variable. Verificar si ya se cumplió el objetivo del ciclo se cambia la variable lógica de estado.

32 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido parcial Esqueleto boolean termino = false; for(int indice=0; indice < arreglo.length && termino==false; indice ++) { if( ) termino=true; }

33 Patrones de algoritmo para instrucciones repetitivas NombreR11-Dar estudiantes que reprobaron ResumenSe requiere calcular y retornar si existen más de 3 estudiantes que no aprobaron el curso Entradas Ninguna Resultados Se ha calculado y retornado si más de 3 estudiantes no aprueban el curso. Patrón de recorrido parcial

34 Patrones de algoritmo para instrucciones repetitivas Patrón de recorrido parcial public boolean darEstudiantesReprobados() { boolean termino = false; int reprobados = 0; for(int indice=0; indice < notas.length && termino==false; indice ++) { if(notas[indice] < 3.0) { reprobados ++; } If(reprobados >3) { termino=true; } return termino; } Cuerpo

35 Actividad Taller No 4

36 Patrones de doble recorrido NombreR11-Dar la nota que más se repite ResumenSe requiere calcular y retornar cual es la nota que más se repite. Entradas Ninguna Resultados Se ha calculado y retornado la nota que más se repite.

37 Patrones de doble recorrido Esqueleto for (int indice1=0; indice1 < arreglo.length; indice1++) { for (int indice2=0; indice2 < arreglo.length; indice2++) { } }

38 Patrones de doble recorrido for (int indice1=0; indice < notas.length; indice1++) { double notaBuscada = notas[indice1]; int contador = 0; for (int indice2=0; indice2 < notas.length; indice2++) { if( notas[indice2]==notabuscada) { contador ++; } return notaMasVecesAparce; }

39 Patrones de doble recorrido public doble darNotaMasVecesAparece() { double notaMasVecesAparece = 0.0; int numeroVecesAparece = 0; for (int indice1=0; indice < notas.length; indice1++) { double notaBuscada = notas[indice1]; int contador = 0; for (int indice2=0; indice2 < notas.length; indice2++) { if( notas[indice2]==notabuscada) { contador ++; } if ( contador > numeroVecesAparece) { notaMasVecesAparece = notaBuscada; numeroVecesAparece = contador; } return notaMasVecesAparce; }

40 Taller No 5

41 Caso No 2

42 Comprensión de los requerimientos NombreR1-Asignar una silla a un pasajero ResumenSe requiere asignar una silla según las preferencias del pasajero. Estas son la clase (ejecutiva o económica) y la ubicación (ventana, centro o pasillo). En la asignación se deben registrar los datos del pasajero. Entradas Nombre del pasajero Cédula del pasajero Clase de la silla que desea Ubicación de la silla que desea. Resultados Si existe una silla con las características de la clase y ubicación solicitadas por el pasajero, se asigna a dicho pasajero

43 Compresión del mundo del problema Constantes Arreglo con 42 sillas Arreglo con 8 sillas Constantes Asociación opcional

44 Taller (HT) Taller No 6 Taller No 7

45 public class Avion { // - - - - - - - - - - - - - - - - - - // Constantes // - - - - - - - - - - - - - - - - - - public final static int SILLAS_EJECUTIVAS = 8; public final static int SILLAS _ECONOMICAS = 42; // - - - - - - - - - - - - - - - - - - // Atributos // - - - - - - - - - - - - - - - - - - private Silla[] sillasEjecutivas; private Silla[] sillasEconomicas; }

46 public class Avion { … // - - - - - - - - - - - - - - - - - - // Constructor // - - - - - - - - - - - - - - - - - - public Avion() { sillasEjecutivas = new Silla[SILLAS_EJECUTIVAS]; sillasEconomicas = new Silla[SILLAS_ECONOMICAS]; // Creación de las sillas de clase ejecutiva sillasEjecutivas[0] = new Silla(1,Silla.CLASE_EJECUTIVA, Silla.VENTANA); sillasEjecutivas[1] = new Silla(2,Silla.CLASE_EJECUTIVA, Silla.PASILLO); … // Creación de las sillas de clase económica sillasEconomicas[0] = new Silla(9,Silla.CLASE_ECONOMICA,Silla.VENTANA); sillasEconomicas[1] = new Silla(10,Silla.CLASE_ECONOMICA,Silla.CENTRAL); sillasEconomicas[2] = new Silla(11,Silla.CLASE_ECONOMICA,Silla.PASILLO); … }

47 Objetos : Silla clase = 1 numero = 6 ubicacion = 3 : Pasajero cedula = 1234 nombre = “Samuel H.” pasajero : Silla clase = 2 numero = 10 ubicacion = 2 pasajero = null

48 : Avion sillasEjecutivas = 01234567 : Silla clase = 1 numero = 1 ubicacion = 1 : Silla clase = 1 numero = 3 ubicacion = 1 : Pasajero cedula = 1234 nombre = “Samuel H.” : Silla clase = 1 numero = 4 ubicacion = 3 pasajero = null : Pasajero cedula = 1234 nombre = “Samuel H.” : Silla clase = 1 numero = 2 ubicacion = 3 pasajero = null...

49 Preguntas ¿Cómo se llama un método de un objeto que esta en un arreglo? Por ejemplo, dentro de la clase Avión, para averiguar si la silla que esta en la posición 0 del arreglo de sillas ejecutivas está ocupada se utiliza la sintaxis: sillasEjecutivas[0].sillaAsignada();

50 Preguntas ¿Los objetos que están en un arreglo se puede guardar en una variable? Silla sillaTemporal = sillasEjecutivas[0];

51 Requerimientos NombreR1-Eliminar reservas ResumenSe requiere eliminar todas las reservas del avión. Entradas Resultados Se han eliminado las reservas del avión.

52 public void eliminarReservas() { for(int i=0; i < SILLAS_EJECUTIVAS; i++) { sillasEjecutivas[ i ].desasignarSilla(); } for(int i=1; i < SILLAS_ECONOMICAS;i++) { sillasEconomicas[ i ].desasignarSilla(); }

53 Taller No 8

54 Contenedoras de tamaño variable 1000 estudiantes con sus notas 200 puesto en un avión

55 Contenedoras de tamaño variable Utilizar el paquete java.util Clase ArrayList

56 Contenedoras de tamaño variable Declaración de un vector: El vector es una clase Ej. private ArrayList catalogo; private ArrayList itemsCompra;

57 Contenedoras de tamaño variable Inicialización y tamaño de un vector Se utiliza la misma sintaxis de creación de cualquier objeto. No es necesario definir el numero de elementos Vector private ArrayList catalogo; public CarroCompras() { catalogo = new ArrayList(); } Arreglo private String[] materias; public Notas() { materias = new String[TOTAL_EST]; }

58 Contenedoras de tamaño variable Métodos de la clase ArrayList isEmpty() : retorna verdadero si el vector no tiene elementos. size(): retorna el número de elementos que tiene el vector.

59 Contenedoras de tamaño variable Acceso a los elementos del Vector Empieza en la posición 0. El método get(pos) recibe como parámetro la posición a recuperar y retorna el objeto. Al recuperar el elemento del vector se hace necesario hacer explicita la clase a la cual pertenece.

60 Contenedoras de tamaño variable Acceso a los elementos del Vector public int darInventario() { int sumaTotal=0; for(int indice=0; indice < catalogo.size(); indice++) { Libro miLibro = (Libro) catalogo.get(indice); sumaTotal += miLibro.darPrecio(); } return sumaTotal; }

61 Contenedoras de tamaño variable Agregar elementos a un vector Se pueden agregar al final o en una posición específica Métodos add(objeto): Agrega al final del vector el objeto que se pasa como parámetro. add(indice,objeto): Agrega al vector el objeto que se pasa como parámetro en la posición (inidce) indicada. El objeto que esta en la psosición desplaza a todos los elementos hacia la posición siguiente.

62 Contenedoras de tamaño variable Agregar elementos a un vector public void agregarTresLibros() { Libro miLibro1 = new Libro(“Programación”,”McHill”,100); Libro miLibro2 = new Libro(“Matemática”,”McHill”,100); Libro miLibro3 = new Libro(“Física”,”McHill”,100); catalogo.add(miLibro2); catalogo.add(miLibro3); catalogo.add(0,miLibro1); }

63 Contenedoras de tamaño variable Replazar un elemento del vector Cuando se requiere remplazar se utiliza el método set(indice,objeto) donde indice es la posición que se desea replazar y objeto es el elemento que tomará ahora la posición.

64 Contenedoras de tamaño variable Replazar un elemento del vector public void intercambiar(int pos1, int pos2) { Libro miLibro1 = (Libro) catalogo.get(pos1); Libro miLibro2 = (Libro) catalogo.get(pos2); catalogo.set(pos2, miLibro1); catalogo.set(pos1, miLibro2); }

65 Contenedoras de tamaño variable Eliminar un elemento del vector Cuando se requiere eliminar se utiliza el método remove(indice) donde indice es la posición que se desea eliminar. public void elminiarLibro(int pos) { catalogo.remove(pos); }


Descargar ppt "Manejo de grupos de atributos Giovanni Hernández P. Nivel 3."

Presentaciones similares


Anuncios Google