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

Slides:



Advertisements
Presentaciones similares
ESTRUCTURAS DE CONTROL
Advertisements

Métodos y parámetros.
Curso de java básico (scjp)
Definición de Clases y Variables de referencia.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Creación y destrucción de objetos
Introducción a los Algoritmos
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Algoritmo y Estructura de Datos I
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Vectores en java.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Arreglos: Vectores en JAVA
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuras de repetición
Tema 6: Clases Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
ESTRUCTURAS DE CONTROL
Tema 9 Estructuras.
Academia de Informática
Clase Teórica No. 4 Programación IV
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Curso Programación en Java
El lenguaje de programación Java
Capítulo 1 “Elementos de Programación”
ESTRUCTURA DE DATOS EN JAVA
Estructuras de Datos Arreglos.
Clase 10: Estructuras de datos y arreglos.
Valor X Valor Y Punto (0,0) Coordenadas.
METODOLOGÍA DE LA PROGRAMACIÓN
Computación II Repaso de java Karina Figueroa Mora.
Programación Orientada Objetos
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
Programanción I Ing. Cristhian Garita Fonseca
Java.
Tema ‧ Comando - while Repeticiones. Comando while ‧ Un ciclo es cualquier construcción de programa que repite una sentencia ó secuencia de sentencias.
Programación Orientada a Objetos
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Definición de situaciones y manejo de casos
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
SCITMina | by Microsoft Bienvenidos Eduardo Daniel Tenorio Mayo Microsoft Student Partner Taller de Programación Orientada a Objetos Con C# Edgar Edel.
Metodología de Programación Clase 1 Leonel Lagos V
Fundamentos de Programación
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Estructuras de Decisión
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ESTRUCTURA DE CONTROL REPETITIVAS: WHILE, DO… WHILE
LENGUAJE DE PROGRAMACIÓN
Clases “ Es una Abstracción de un elemento del mundo real ”
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
OperadorSignificadoEjemplos +Se usa para sumar valores numéricos (3+4)*(5-2) -Se usa para restar valores numéricos 7 – 2 50 – 35 *Se usa para.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
ArreglosUnidimensionales enjava. Existenarreglosdeunadimensión (unidimensionales),dedosdimensiones Losarreglossonvariablesquealmacenanvarios valores del.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Programación Orientada Objetos Vectores de Objetos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Ciclos condicionales y exactos Estructura de control de ciclos
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

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

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.

Requerimientos Funcionales

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

Contenedoras de tamaño fijo … Atributo que es capaz de agrupar una secuencia de valores se denomina contenedor Curso double notas =

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; }

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

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 [ ]

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

Instrucciones repetitivas… Taller No 1.

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.

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; }

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 ++; …… }

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

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

Instrucciones repetitivas… Taller No 2

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

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

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

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

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

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.

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.

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

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

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; }

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?

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

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)

Actividad Taller No 3 Taller No 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.

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; }

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

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

Actividad Taller No 4

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.

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

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; }

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; }

Taller No 5

Caso No 2

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

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

Taller (HT) Taller No 6 Taller No 7

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; }

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); … }

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

: Avion sillasEjecutivas = : 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...

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();

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

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

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(); }

Taller No 8

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

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

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

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]; }

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.

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.

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; }

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.

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); }

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.

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); }

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); }