0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.

Slides:



Advertisements
Presentaciones similares
Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Advertisements

Introducción a la Programación Orientada a Objetos Una Universidad administra varias residencias para estudiantes extranjeros. Cada residencia ocupa un.
Tipos de Datos Abstractos Vector de Racionales
El Proceso de desarrollo de software
El proceso de desarrollo de software
Abstracciones y Modelos
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Encapsulamiento y Abstracción
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.
Unidad 3 Punteros.
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.
Arreglos: Vectores en JAVA
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Estructuras de Datos Arreglos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
METODOLOGÍA DE LA PROGRAMACIÓN
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
Estructuras de Control.
Análisis de Algoritmos 2
Sentencias de repetición
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tabla.
Matrices Prof. Flor Narciso Departamento de Computación
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
Entrada y Salida ES.leerChar (); ES.leerEntero (); ES.leerEnteroLargo (); ES.leerFloat (); ES.leerDouble (); System.out.print System.out.println.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Ingeniería en Software Facultad de Ingeniería 2014
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Introducción a los TADs
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Ing. Esp. Ricardo Cujar. Permite la ejecución de una sentencia, dada una determinada condición. If(condición){ sentencia(s) a ejecutar en caso de que.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Diferencia entre implementar en RPA e IPOO - Diseño En.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Asociación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Introducción a la Programación Orientada a Objetos Sonia Rueda Encapsulamiento y Abstracción Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2015 Departamento de Ciencias e Ingeniería
Transcripción de la presentación:

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo de dos dimensiones Caso de estudio: Estación Meteorológica Dr. Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA En una región se mantienen las temperaturas mínimas registradas en un conjunto de nEst estaciones meteorológicas en un período de n días. Una manera de representar los datos sería mediante un arreglo de dos dimensiones declarado como sigue: Introducción a la Programación Orientada a Objetos IPOO float tabla [][]; tabla = new float[nEst][n];

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Gráficamente un arreglo de dos dimensiones puede verse como una grilla: Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA La operación básica sigue siendo la subindicación. Ahora cuando especificamos sólo un subíndice hacemos referencia a una fila completa: Introducción a la Programación Orientada a Objetos IPOO tabla[2]

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Para hacer referencia a un elemento particular, por ejemplo, la temperatura mínima de la primera estación meteorológica del cuarto día de la semana: Introducción a la Programación Orientada a Objetos IPOO tabla[0][3]

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Un arreglo de dos dimensiones es en realidad un arreglo cuyas componentes son arreglos. No todas las componentes tienen necesariamente la misma cantidad de elementos. La variable length sigue siendo accesible, tabla.length nos proporciona el número de filas (cuatro). tabla[i].length, nos indica el número de elementos en la fila i. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Introducción a la Programación Orientada a Objetos IPOO TempMinEstacion > real [][] tMin > TempMinRegion(nEst, nDias: entero) > establecerTemp(e, d: entero, t: real) Requiere nEst>0 y nDias>0 Requiere 0<=e<cantEstaciones() y 0<=d<cantDias()

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA TempMinEstacion > real [][] tMin > cantEstaciones(): entero cantDias(): entero obtenerTemp(e,d:entero): real promedioRegion(): real promedioEstacion(e: entero): real promedioDia(d: entero): real estacionesHeladas(): entero Requieren 0<=e<cantEstaciones() y 0<=d<cantDias() Cuenta la cantidad de estaciones en las que heló Queda pendiente como ejercicio establecer casos de prueba adecuados para verificar cada servicio.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TempMinRegion { private float [][] tabla; public TempMinRegion(int nEst, int nDias){ //Requiere nEst>0 y nDias >0 tabla = new float[nEst][nDias]; } … } 9

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int cantEstaciones () { return tabla.length ; } public int cantDias () { return tabla[0].length ; } 10 En este problema todas las filas tienen la misma cantidad de columnas, de modo que cantDias() no necesita recibir como parámetro un número que indique de qué fila se va a retornar la cantidad de columnas.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public void establecerTemp(int e,int d, float t){ /*Requiere 0<= e < cantEstaciones() y 0<= d < cantDias()*/ tabla[e][d] = t ; } public float obtenerTemp(int e, int d){ /*Requiere 0<= e < cantEstaciones() y 0 <= d< cantDias()*/ return tabla[e][d] ; } 11 Observemos que en este diseño el primer día y la primera estación se referencian con 0.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float promedioEstacion (int est) { /* Requiere 0<=e<cantEstaciones() */ float sum = 0; for (int dia=0;dia<cantDias();dia++) sum = sum + tabla[est][dia]; return sum/cantDias(); } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float promedioEstacion (int est) { /* Requiere 0<=e<cantEstaciones() */ float sum = acumuloEstacion(est); return sum/cantDias(); } Introducción a la Programación Orientada a Objetos IPOO Calcular el promedio de una estación requiere sumar una fila.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float acumuloEstacion (int i) { float sum = 0; for (int j=0; j < cantDias(); j++) sum = sum + tabla[i][j]; return sum; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo promedioRegion DS promedio Recorrer cada estación y por cada estación cada día, acumulando las temperaturas Dividir el valor acumulado por la cantidad de temperaturas registradas Es un recorrido exhaustivo

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo promedioRegion DS promedio para cada estacion e para cada dia d de la estacion e suma ← suma + temperatura de estacion e en dia d promedio ← suma : (estaciones x dias) Es una versión refinada del algoritmo anterior, permite identificar las estructuras de control

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float promedioRegion () { float sum = 0; for (int i = 0; i < cantEstaciones(); i++) for (int j = 0; j < cantDias(); j++) sum = sum + tabla[i][j]; return sum/(cantDias()*cantEstaciones()); } Introducción a la Programación Orientada a Objetos IPOO Un recorrido exhaustivo por Estación y luego por Día puede implementarse con dos bucles for anidados.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float promedioRegion () { float sum = 0; for (int i=0; i < cantEstaciones(); i++) sum = sum + acumuladoEstacion(i); return sum/(cantDias()*cantEstaciones()); } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float promedioDia (int dia) { //Requiere 0<=dia<cantDias() float sum = 0; for (int i=0;i<cantEstaciones();i++) sum = sum + tabla[i][dia]; return (sum / cantEstaciones()); } Introducción a la Programación Orientada a Objetos IPOO Recorre exhaustivamente todas las estaciones de un mismo día. El recorrido exhaustivo de una columna puede implementarse con un bucle for.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo estacionesHeladas DS contador para cada estacion si heló al menos un dia incrementar el contador Introducción a la Programación Orientada a Objetos IPOO En el diseño de cada algoritmo buscamos identificar las estructuras de control. “para cada estación” implica un recorrido exhaustivo de todas las filas, puede implementarse con un bucle for. Cada fila no va a ser recorrida exhaustivamente, en cuanto se encuentra un día que heló, se incrementa el contador y el recorrido de esa fila termina.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int estacionesHeladas () { /*Cuenta la cantidad de estaciones en las que heló*/ int cont = 0; for (int i=0; i<cantEstaciones(); i++) if (huboHeladas(i)) cont++; return cont ; } Introducción a la Programación Orientada a Objetos IPOO El recorrido es exhaustivo, todas las estaciones meteorológicas tienen que considerarse.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private boolean huboHeladas (int est) { /* Requiere 0<=e<cantEstaciones() */ boolean helada = false; int j=0; while (j < cantDias() && !helada){ if ( tabla[est][j]<=0) helada = true; j++; } return helada; } 22 Cada recorrido sobre una estación meteorológica particular es no exhaustivo. Sí un día helo, el método retorna verdadero. Es muy importante elegir casos de prueba significativos.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo estacionesHeladas DS contador para cada estacion si heló al menos un dia incrementar el contador 23 En la segunda versión no se asume disponible una primitiva, la solución propone dos bucles anidados Algoritmo estacionesHeladas DS contador para cada estacion para cada día de la semana y mientras no encuentre uno en el que heló si heló incrementar contador

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int estacionesHeladas () { /*Cuenta la cantidad de estaciones en las que heló*/ int cont = 0; int j = 0; boolean helada; for (int i=0; i < cantEstaciones(); i++){ j = 0; helada = false; while (j < cantDias() && !helada){ if (tabla[i][j] <= 0){ cont++; helada = true; } j++; } } return cont ; } 24

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int estacionesHeladas () { /*Cuenta la cantidad de estaciones en las que heló*/ int cont = 0; int j = 0; boolean helada; for (int i=0; i < cantEstaciones(); i++){ j = 0; while (j < cantDias() && !helada){ if (tabla[i][j] <= 0){ cont++; helada = true; } j++; } return cont ; } 25 ERROR DE APLICACIÓN

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int estacionesHeladas () { /*Cuenta la cantidad de estaciones en las que heló*/ int cont = 0; int j = 0; boolean helada; for (int i=0; i < cantEstaciones(); i++){ j = 0; helada = false; while (j < cantDias() && !helada){ if (tabla[i][j] <= 0){ cont++; } j++; } return cont ; } 26 ERROR DE APLICACIÓN

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TestTempMinRegion { public static void main(String[] args) { // Tester para una semana int cant =7; TempMinRegion reg; reg = genTempMinReg(cant) ; System.out.println("Muestra la región "); mostrarTempMinReg(reg) ; System.out.println("Promedio Region "+ reg.promedioRegion() ); System.out.println("Promedio Estacion 0 "+ reg.promedioEstacion(0) ); System.out.println("Estaciones Heladas "+ reg.estacionesHeladas() ); } … } 27

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public static TempMinRegion genTempMinReg(int cant) { float t ; TempMinRegion e = new TempMinRegion(4,cant); for (int i=0;i< e.cantEstaciones();i++) for (int j=0;j< e.cantDias();j++){ t = j+i-5; e.establecerTemp (i,j,t) ; }; return e; } public static void mostrarTempMinReg (TempMinRegion e){ for (int i=0;i< e.cantEstaciones();i++) for (int j=0;j< e.cantDias();j++) System.out.println(" "+e.obtenerTemp(i,j) ); } 28

RESUMEN La implementación de cada servicio requiere diseñar adecuadamente un algoritmo. El diseño de cada algoritmo exige aplicar los conceptos de programación estructurada, diseño top-down y refinamiento paso a paso, aprendidos en Resolución de Problemas y Algoritmos. Buscamos soluciones correctas, legibles y eficientes. El recorrido de una estructura de datos como un arreglo implica seleccionar adecuadamente las estructuras de control. Introducción a la Programación Orientada a Objetos IPOO

RESUMEN La verificación de cada servicio requiere elegir adecuadamente los casos de prueba. El diseño establece como siempre los compromisos de la clase Cliente y la clase Proveedora. La verificación consiste en testear que cada clase cumple con su compromiso. Algunas modificaciones de diseño provocan cambios solo en la clase Cliente. Otras decisiones de diseño solo afectan a la clase Proveedora. Otras decisiones afectan a ambas. Introducción a la Programación Orientada a Objetos IPOO

RESUMEN Declaración, creación y recorrido en arreglos de dos dimensiones Estructuras de datos y encapsulamiento Diseño de algoritmos: Recorridos exhaustivos y no exhaustivos. Tester: Casos de Prueba. Introducción a la Programación Orientada a Objetos IPOO