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 Encapsulamiento.

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

Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
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 Arreglo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
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.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
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 Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
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
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
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
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
Estructuras de Datos Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de.
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
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 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2015 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Sonia Rueda Herencia y Polimorfismo
Array Bidemensionales. ¿Qué es una matriz o tabla?  Una matriz es un vector de vectores o también llamado array bidimensional.  Dimensión de un Arreglo:
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Unidad 3. Introducción a la programación
Programación Orientada a Objetos
IPOO 2 cuatrimestre Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Tema 7 Arreglos Parte 4.
Estructuras de Datos Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de.
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
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
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre Departamento de Ciencias e Ingeniería
Transcripción de la presentación:

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento y Abstracción 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 2016

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA En una región se mantienen las temperaturas mínimas registradas en un conjunto de 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: Cada fila representa a una estación. Cada columna representa a un día del período.

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 del cuarto día de la primera estación meteorológica : 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 tabla 7 length

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Introducción a la Programación Orientada a Objetos IPOO TempMinRegion > real [][] tMin > TempMinRegion(nEst, nDias: entero) > establecerTemp(e, d: entero, t: real) Requiere nEst>0 y nDias>0 Requiere 0<=e<cantEstaciones() y 1<=d<=cantDias() Observemos que en este diseño la primera estación se referencia con 0 y el primer día con 1.

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

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA contarMayores(t: real): entero computa la cantidad de días en los que se produjeron temperaturas mayores a t en la región. mayorPromedioRegion(): real computa el promedio de cada estación y retorna el mayor. mayorTempDia(d: entero): real retorna la mayor temperatura del día d, considerando todas las estaciones. estacionesHeladas(): entero computa en cuántas estaciones se produjeron heladas. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TempMinRegion { /*Cada fila de la matriz representa a una estación y cada columna a un día del período*/ private float [][] tabla; public TempMinRegion(int nEst, int nDias){ //Requiere nEst > 0 y nDias > 0 tabla = new float[nEst][nDias]; } … } 11

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int cantEstaciones () { return tabla.length ; } public int cantDias () { return tabla[0].length ; } 12 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. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public void establecerTemp(int e,int d, float t){ /*Requiere 0<= e < cantEstaciones() y 1<=d<=cantDias()*/ tabla[e][d-1] = t ; } public float obtenerTemp(int e, int d){ /*Requiere 0<=e<cantEstaciones() y 1<=d<=cantDias()*/ return tabla[e][d-1] ; } 13 Observemos que el primer día corresponde a subíndice 0 en el arreglo.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo contarMayores Recorrer cada día en cada estación Incrementar un contador si la temperatura es mayor a una temperatura dada Es un recorrido exhaustivo

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo contarMayores DE t DS contador para cada estacion e para cada dia d de la estacion e si la temperatura del día d en la estación e es > t incrementar contador Introducción a la Programación Orientada a Objetos IPOO Es una versión refinada del algoritmo anterior donde se identifican claramente las estructuras de control.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float contarMayores (float t) { int cont = 0; for (int est=0;est<cantEstaciones();est++) for (int dia=0;dia<cantDias();dia++) if (tabla[est][dia]> t) cont++; return cont; } 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 anidados. Observemos que recorremos el arreglo desde la fila 0, columna 0.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo mayorPromedioRegion Considerar que el promedio de la primera estación es el mayor. Calcular el promedio de cada estación, a partir de la segunda, y compararlo con el mayor promedio calculado hasta el momento. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo mayorPromedioRegion DS mayor mayor ← promedio de la primera estación para cada estacion e a partir de la segunda calcular el promedio de la estacion e si promedio de la estacion e > mayor mayor ← promedio de la estación e Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float mayorPromedioRegion () { float pEst; float mayor = promedioTempMin(0); for (int est=1;est<cantEstaciones();est++){ pEst = promedioTempMin(est); if (pEst>mayor) mayor = pEst; } return mayor; } Introducción a la Programación Orientada a Objetos IPOO

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

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float mayorTempDia (int d) { //Requiere 1<=d<=cantDias() float mayor = tabla[0][d-1]; for (int est=1;est<cantEstaciones();est++) if (tabla[est][d-1] > mayor) mayor = tabla[est][d-1] ; return mayor; } Introducción a la Programación Orientada a Objetos IPOO Recorre todas las estaciones del día d. Es un recorrido exhaustivo de una columna del arreglo.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo estacionesHeladas DS contador para cada estacion e si heló al menos un dia en e 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 est=0;est<cantEstaciones();est++) if (huboHeladas(est)) 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 e) { /* Requiere 0<=e<cantEstaciones() */ boolean helada = false; int dia=0; while (dia < cantDias() && !helada){ if ( tabla[e][dia]<=0) helada = true; dia++; } return helada; } 24 Cada recorrido sobre una estación meteorológica particular es no exhaustivo. Sí un día helo, el método retorna verdadero.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo estacionesHeladas DS contador para cada estacion e si heló al menos un dia en e incrementar el contador 25 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 e para cada día de la semana d y mientras no encuentre uno en el que heló en e 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 ; } 26

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 ; } 27 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 ; } 28 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(“Mayor promedio de la region "+ reg.mayorPromedioRegion()); System.out.println(“Mayor temeratura en el primer día"+ reg.mayorTempDia(1)); System.out.println(“Cantidad de estaciones con heladas "+ reg.estacionesHeladas()); } … } 29

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()-1;i++){ for (int j=1;j< e.cantDias();j++){ t = j+i-5; e.establecerTemp (i,j,t) ; } e.establecerTemp(i,e.cantDias(),-i); } for (int j=1;j <= e.cantDias()-1;j++){ t = j*2; e.establecerTemp(e.cantEstaciones()-1,j,t); } e.establecerTemp(e.cantEstaciones()-1, e.cantDias(),0); return e; } 30

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public static void mostrarTempMinReg(TempMinRegion e){ for (int i=0;i< e.cantEstaciones();i++){ for (int j=1;j<= e.cantDias();j++) System.out.print(" "+e.obtenerTemp(i,j)); System.out.println(); } 31

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

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Introducción a la Programación Orientada a Objetos IPOO TempMinRegion > TempMinEstacion [] tabla > TempMinRegion(nEst, nDias: entero) > establecerTemp(e, d: entero, t: real) Requiere nEst>0 y nDias>0 Requiere 0<=e<cantEstaciones() y 1<=d<=cantDias() En este diseño la region se modela con un arreglo cuyas componentes mantienen referencias a objetos.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA TempMinRegion > TempMinEstacion [] tabla > cantEstaciones(): entero cantDias(): entero obtenerTemp(e,d:entero): real contarMayores(t: real): entero mayorPromedioRegion(): real mayorTempDia(d: entero): real estacionesHeladas(): entero Requieren 0<=e<cantEstaciones() y 1<=d<=cantDias() Cuenta la cantidad de estaciones en las que heló El cambio en la representación interna de los datos no afecta a la signatura de los servicios. 35

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TempMinRegion { private TempMinEstacion[] tabla; public TempMinRegion (int nEst, int nDias){ //Requiere nEst>0 y nDias >0 for (int est=0;est<nEst;est++) tabla[est] = new TempMinEstacion(nDias); } … } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int cantEstaciones () { return tabla.length ; } public int cantDias () { return tabla[0].cantDias(); } 37 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 1<=d<=cantDias() */ tabla[e].establecerTempMin(d,t); } public float obtenerTemp(int e,int d){ /* Requiere 0<=e<cantEstaciones() y 1<=d<=cantDias() */ return tabla[e].obtenerTempMin(d); } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public float mayorPromedioRegion () { float pEst; float mayor = tabla[0].promedioTempMin(); for (int est=1;est<cantEstaciones();est++){ pEst= tabla[est].promedioTempMin(); if (pEst>mayor) mayor = pEst; } return mayor; } 39 La clase TempMinRegion está asociada a la clase TempMinEstacion, tiene un atributo de esa clase y usa sus servicios.

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(“Mayor promedio de la region "+ reg.mayorPromedioRegion()); … } … } 40 Como la representación de los datos está encapsulada, el cambio en la estructura no afecta a las clases que usan a TempMinRegion.

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()-1;i++){ for (int j=1;j< e.cantDias();j++){ t = j+i-5; e.establecerTemp (i,j,t) ; } e.establecerTemp (i,e.cantDias(),-i) ; } for (int j=1;j<= e.cantDias()-1;j++){ t = j*2; e.establecerTemp (e.cantEstaciones()-1,j,t); } e.establecerTemp (e.cantEstaciones()-1, e.cantDias(),0); return e; } 41

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public static void mostrarTempMinReg (TempMinRegion e){ for (int i=0;i< e.cantEstaciones();i++){ for (int j=1;j<= e.cantDias();j++) System.out.print(“ “ +e.obtenerTemp(i,j) ); System.out.println(); } 42