Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y...
-
Upload
estrella-chavana -
Category
Documents
-
view
8 -
download
2
Transcript of Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y...
![Page 1: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/1.jpg)
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde operaciones para:•Contar en cuántos días heló •Contar en cuántos días heló todo el día•Retornar el mayor promedio (entre temperaturas mínima y máxima) registrado•Decidir si algún día la amplitud térmica (diferencia entre la temperatura máxima y la mínima) fue de más de g grados. •Decidir si entre dos días consecutivos, la diferencias entre las temperaturas máximas o la diferencia entre las temperaturas mínimas, fue mayor que g.•Decidir si entre dos días consecutivos, la diferencia entre las amplitudes térmicas fue mayor que un cierto valor g.
Establecer casos de prueba
Encapsulamiento
![Page 2: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/2.jpg)
TempMinMaxEst
float [] minfloat [] max
<<constructores>>
TempMinMaxEst (cant : entero)
<<comandos>>establecerTempMin (d : entero t : real)establecerTempMax (d : entero t : real)
Crea dos estructuras para mantener las temperaturasde cierta cantidad de días
y las inicializa en 0
Se asume que la claseCliente controla que
la temperatura máximaes mayor o igual a la
Mínima.
Encapsulamiento
![Page 3: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/3.jpg)
<<consultas>>obtenerTempMin(d : entero):realobtenerTempMax(d : entero):real cantDias () : enteromayorPromedio () : realdiasHelo () : enteroheloTodo(): enteroamplitudMayor(g:real) : booleanminmaxSigMayor (g:real):booleanamplitudSigMayor(g:real):boolean
TempMinMaxEst
float [] minfloat [] max
Encapsulamiento
![Page 4: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/4.jpg)
Características de la clase• La entrada y salida se realiza desde la clase cliente. • El chequeo de consistencia lo hace la clase que lee datos (temperatura máxima mayor o igual a mínima).• El primer día corresponde al subíndice 0.• La estructura está completa y la cantidad de elementos se define en el momento de la creación• Todos los elementos ya están ingresados cuando empieza el procesamiento
Encapsulamiento
![Page 5: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/5.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
//Constructor// Crea una estructura para mantener las temperaturas// de cierta cantidad de días y las inicializa en 0
public TempMinMaxEst(int cant) {max= new float[cant];
min = new float[cant]; inicializa(cant);}...}
Encapsulamiento
![Page 6: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/6.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
//Comandos y Consultas triviales// Asume que la clase Cliente controla max > minpublic void establecerTempMin (int d,float m){ min[d] = m;}public void establecerTempMax (int d,float m){ max[d] = m;}public float obtenerTempMin (int d){ return min[d];}public float obtenerTempMax (int d){ return max[d];}
}...}
Encapsulamiento
![Page 7: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/7.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
...// Consultaspublic int cantHeladas(){//… int cant=0; for (int i=0;i<min.length;i++) if (min[i]<0) cant++; return cant; }…}
Recorrido Exhaustivo
Encapsulamiento
![Page 8: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/8.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
...// Consultaspublic float mayorPromedio(){//… float mayor = (min[0]+max[0])/2; for (int i=1;i<min.length;i++) if ((max[i]+min[i])/2 > mayor) mayor = (max[i]+min[i])/2; return mayor; } }…}
Encapsulamiento
![Page 9: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/9.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
...// Consultaspublic boolean amplitudMayor(float g){//… boolean encontre=false; int i=0; while ((i<min.length) && (!encontre)) if ((max[i]-min[i])>g) encontre=true; else i++; return encontre; }…}
Encapsulamiento
![Page 10: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/10.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
...// Consultaspublic boolean minmaxSigMayor(float g){//… boolean encontre=false; int i=0; while ((i<min.length-1) && (!encontre)) if (Math.abs(max[i]-max[i+1])>g) || Math.abs(min[i]-min[i+1])>g)) encontre=true; else i++; return encontre; }…}
Encapsulamiento
![Page 11: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/11.jpg)
class TempMinMaxEst {private float [] max;private float [] min;
...// Consultaspublic boolean amplitudSigMayor(float g){//… boolean encontre=false; int i=0; while ((i<min.length-1) && (!encontre)) if (Math.abs(max[i]-max[i+1])>g) || Math.abs(min[i]-min[i+1])>g)) encontre=true; else i++; return encontre; }…}
Encapsulamiento
![Page 12: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/12.jpg)
Diseñe e implemente una clase tester que brinde un servicio para leer las temperaturas y para probar la funcionalidad de la clase TempMinMaxEst
Encapsulamiento
![Page 13: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/13.jpg)
class TestTempMinMaxEst {static TempMinMaxEst est;
public static void main(String[] args) { int cantD =0; cantD = leerCantDias () ;
est=new TempMinMaxEst(cant);
leerTempEst(cantD) ; System.out.println("Muestra la estación "); mostrarTempEst(cantD) ;
System.out.println(“El mayor promedio es “ + est.mayorPromedio() );
}
Encapsulamiento
![Page 14: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/14.jpg)
class TestTempMinEstacion {…
public static int leerCantDias() {int cant;do{ System.out.println("Ingrese la cantidad de días "); cant=ES.leerEntero(); }while (cant <= 0);return cant;}
Encapsulamiento
![Page 15: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/15.jpg)
class TestTempMinMaxEst {
public static void leerTempMinEst(int cant) { float max,min ;for (int i=0;i< cant;i++){ System.out.println("Ingrese …. "+i); do { max = ES.leerFloat(); min = ES.leerFloat(); if (max < min) … while (max < min); est.establecerTempMin (i,min) ; est.establecerTempNax (i,max) ;}};
}
Encapsulamiento
![Page 16: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/16.jpg)
class TestTempMinEstacion {
public static void mostrarTempMinEst (int cant){ for (int i=0;i< cant; i++){ System.out.println(" min "+est.obtenerTempMin(i) ); System.out.println(“ max "+est.obtenerTempMax(i) );
} }}
Encapsulamiento
![Page 17: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/17.jpg)
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde operaciones para:
El mismo problema puede representarse de maneras diferentes.
En lugar de dos arreglos de componentes elementales podríamos tener un arreglo cuyas componentes son objetos. Cada objeto mantiene dos valores elementales, uno para la temperatura mínima y otro para la máxima.
Encapsulamiento
![Page 18: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/18.jpg)
TempMinMaxEst
float [] minfloat [] max
<<constructores>>
TempMinMaxEst (cant : entero)
<<comandos>>establecerTempMin (d : entero t : real)establecerTempMax (d : entero t : real)
Crea dos estructuras para mantener las temperaturasde cierta cantidad de días
y las inicializa en 0
Se asume que la claseCliente controla que
la temperatura máximaes mayor o igual a la
Mínima.
Encapsulamiento
![Page 19: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/19.jpg)
TempMinMaxEst
Registro [] rt
Registro
min:floatmax:float
<<constructores>>
Registro (mi,ma:real)
<<comandos>>establecerMin (m:real)establecerMax(m:real)<<consultas>>obtenerMin():realobtenerMax():realpromedio():real
<<constructores>>
TempMinMaxEst (cant : entero)
<<comandos>>establecerTempMin (d : entero t : real)establecerTempMax (d : entero t : real)
Encapsulamiento
![Page 20: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/20.jpg)
TempMinEstacion
Registro [] rt
<<consultas>>obtenerTempMin(d : entero):realobtenerTempMax(d : entero):real cantDias () : enteromayorPromedio () : realdiasHelo () : enteroamplitudMayor(g:real) : booleanminmaxSigMayor (g:real):booleanamplitudSigMayor(g:real):boolean
Encapsulamiento
![Page 21: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/21.jpg)
class TempMinMaxEst { private Registro [] rt;
//constructorpublic TempMinMaxEst (int cant){//Crea un arreglo de referencias nulas rt = new Registro [cant]; }
...}
Encapsulamiento
![Page 22: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/22.jpg)
class TempMinMaxEst {private Registro [] rt;
//Comandos y Consultas triviales// Asume que la clase Cliente controla max > minpublic void establecerTempMin (int i, float m){ rt[i].establecerTempMin(m);}public void establecerTempMax (int i,float m){ rt[i].establecerMax(m);}public float obtenerTempMin (int i){ return rt[i].obtenerMin();}public float obtenerTempMax (int i){ return rt[i].obtenerMax();}}...}
Encapsulamiento
![Page 23: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/23.jpg)
class TempMinMaxEst {private Registro [] rt;
...// Consultaspublic int cantHeladas(){//… int cant=0; for (int i=0;i<rt.length;i++) if (rt[i].obtenerMin()<0) cant++; return cant; }…}
Encapsulamiento
![Page 24: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/24.jpg)
public float mayorPromedio(){
float mayor = (rt[0].obtenerMin()+ rt[0].obtenerMax())/2; Registro aux; float m; for (int i=1;i<rt.length;i++){ aux = rt[i]; m = (aux.obtenerMin()+ aux.obtenerMax())/2; if (m > mayor) mayor = m; } return mayor; }
Encapsulamiento
![Page 25: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/25.jpg)
La única modificación en el diseño son los atributos de instancia.
Como los atributos están encapsulados, el cambio en la representación afecta la implementación de las operaciones, PERO NO A LAS CLASES CLIENTE.
En particular nos sirve el mismo tester que acabamos de definir.
Queda como ejercicio implementar las demás operaciones de acuerdo a este diseño.
Encapsulamiento
![Page 26: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/26.jpg)
class TestTempMinMaxEst {static TempMinMaxEst est;
public static void main(String[] args) { int cantD =0; cantD = leerCantDias () ;
est=new TempMinMaxEst(cant);
leerTempEst(cantD) ; System.out.println("Muestra la estación "); mostrarTempEst(cantD) ;
System.out.println(“El mayor promedio es “ + est.mayorPromedio() );
}
Encapsulamiento
![Page 27: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/27.jpg)
Introducción a la Programación Orientada a Objetos
Hallar una representación adecuada para mantener el registro de las temperaturas máximas y mínimas para cierta cantidad de estaciones meteorológicas diferentes.
Otra alternativa para representar los datos sería mediante un arreglo de dos dimensiones declarado como sigue:
float rt [][];
rt = new float[2][7];
Encapsulamiento
![Page 28: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/28.jpg)
Introducción a la Programación Orientada a Objetos
Gráficamente un arreglo de dos dimensiones puede verse como una grilla:
0 1 2 3 4 5 6
0 -4.0 -5.0 1.0 8.0 3.0 4.0 -2.0
1 2.0 4.0 12.0 11.0 8.0 5.0 10.0
Encapsulamiento
![Page 29: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/29.jpg)
TempMinMaxEst
float [] [] rt
<<constructores>>TempMinMaxEst (cant : entero) <<comandos>>establecerTempMin (d : entero t : real)establecerTempMax (d : entero t : real)
Observemos que en las tres alternativas la signatura de las operaciones es la misma, cambia la declaración de los atributos
Encapsulamiento
![Page 30: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/30.jpg)
TempMinEstacion
float [] [] rt
<<consultas>>obtenerTempMin(d : entero):realobtenerTempMax(d : entero):real cantDias () : enteromayorPromedio () : realdiasHelo () : enteroamplitudMayor(g:real) : booleanminmaxSigMayor (g:real):booleanamplitudSigMayor(g:real):boolean
Encapsulamiento
![Page 31: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/31.jpg)
class TempMinMaxEst {private float [] [] rt;
//Constructor// Crea una estructura para mantener las temperaturas// de cierta cantidad de días y las inicializa en 0
public TempMinMaxEst(int cant) {rt= new float[2][cant];
inicializa(cant);}...}
Encapsulamiento
![Page 32: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/32.jpg)
class TempMinMaxEst {private float [] [] rt;
//Comandos y Consultas triviales// Asume que la clase Cliente controla max > minpublic void establecerTempMin (int i, float m){ rt[0][i] = m;}public void establecerTempMax (int i,float m){ rt[1][i] = m;}public float obtenerTempMin (int i){ return rt[0][i];}public float obtenerTempMax (int i){ return rt[1][i];}
}...}
Encapsulamiento
![Page 33: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/33.jpg)
class TempMinMaxEst {private float [][] rt;
...// Consultaspublic int cantHeladas(){//… int cant=0; for (int i=0;i<rt[0].length;i++) if (rt[0][i]<0) cant++; return cant; }…}
Encapsulamiento
![Page 34: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/34.jpg)
public float mayorPromedio(){
float mayor = (rt[0][0]+rt[1][0])/2; float m; for (int i=1;i<rt[0].length;i++){ m = (rt[0][i]+rt[1][i])/2; if (m > mayor) mayor = m; } return mayor; }
Encapsulamiento
![Page 35: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/35.jpg)
class TempMinMaxEst { private float [] max; private float [] min;//Constructor
public TempMinMaxEst(int cant) {max= new float[cant];
min = new float[cant]; inicializa(cant);}...}
Encapsulamiento
![Page 36: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/36.jpg)
class TempMinMaxEst { private Registro [] rt;//constructorpublic TempMinMaxEst (int cant){//Crea un arreglo de referencias nulas rt = new Registro [cant]; }...}
Encapsulamiento
![Page 37: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/37.jpg)
class TempMinMaxEst { private float [] [] rt;//Constructorpublic TempMinMaxEst(int cant) {
rt= new float[2][cant]; inicializa (cant);}...}
Encapsulamiento
![Page 38: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/38.jpg)
class TestTempMinMaxEst {
TempMinMaxEst est; est=new TempMinMaxEst(5);
...
System.out.println(“El mayor promedio es “ + est.mayorPromedio() );
}
Encapsulamiento
![Page 39: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/39.jpg)
class TempMinMaxEst { private float [] max; private float [] min;//Constructor
public TempMinMaxEst(int cant) {max= new float[cant];
min = new float[cant]; inicializa(cant);}…}
min
5length
est
5length
max
Encapsulamiento
![Page 40: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/40.jpg)
class TempMinMaxEst { private Registro [] rt;//constructorpublic TempMinMaxEst (int cant){//Crea un arreglo de referencias nulas rt = new Registro [cant]; }...}
est
5length
rt
Encapsulamiento
![Page 41: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/41.jpg)
class TempMinMaxEst { private float [] [] rt;//Constructorpublic TempMinMaxEst(int cant) {
rt= new float[2][cant]; inicializa (cant);}...}
est
2length
rt
3length
3length
Encapsulamiento
![Page 42: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/42.jpg)
Introducción a la Programación Orientada a Objetos
Defina una clase TempMinMaxRegion que permita mantener una tabla que registre las temperaturas mínimas y máxima de cierta cantidad de estaciones meteorológicas de una región para cada día de un período.
Encapsulamiento
TempMinMaxRegion
Registro [][] tabla<<constructor>>TempMinMaxRegion(ne,nd: entero)
<<comandos>>establecerTemp(e,d : entero, t : Registro)
Asume que el día yla estación son válidas
![Page 43: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/43.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
TempMinMaxRegion
Registro [][] tabla
<<consultas>>cantEstaciones() : enterocantDias() : enteroobtenerTemp (est,dia:entero ):RegistromayorAmplitud(): realmayorAmplitud(est:entero):realdiaMayorAmplitud(): enteroestacionMayorAmplitud():enteroestacionesHeladas () : entero
Asume un valor consistente
Cuenta la cantidad de estaciones en las que heló
Retorna la mayor amplitud térmica
registrada
Retorna la mayor amplitud térmica de una estación
Retorna el día en el que se registro la mayoramplitud térmica
![Page 44: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/44.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
Registro
min:floatmax:float
<<constructores>>
Registro (mi,ma:real)
<<comandos>>establecerMin (m:real)establecerMax(m:real)<<consultas>>obtenerMin():realobtenerMax():realamplitud():real
![Page 45: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/45.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
class TempMinMaxRegion {
private Registro [][] tabla;
public TempMinMaxRegion (int nEst,int nDias) {
tabla = new Registro [nEst][nDias];}
…}
![Page 46: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/46.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
public int cantEstaciones () { return tabla.length ; }public int cantDias () { return tabla[0].length ; }
![Page 47: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/47.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
Algoritmo mayorAmplitudDS mayorpara cada estacion para cada día si la amplitud es mayor que la encontrada hasta el
momento, la mayor es la que corresponde a estacion y dia
Notemos que en el diseño del algoritmo no usamos una notación formal, buscamos identificar las estructuras de control que van a permitir recorrer la estructura de datos.
![Page 48: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/48.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
public float mayorAmplitud () {
float mayor = tabla[0][0].amplitud(); for (int i=0;i<cantEstaciones();i++) for (int j=0;j<cantDias();j++) if mayor < tabla[i][j].amplitud(); mayor = tabla[i][j].amplitud();
return mayor; }
![Page 49: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/49.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
Algoritmo mayorAmplitudDE estDS mayor
para cada día si la amplitud es mayor que la encontrada hasta el
momento, la mayor es la que corresponde a dia
La solución requiere recorrer solo una fila, la que corresponde a la estación recibida como parámetro.
![Page 50: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/50.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
public float mayorAmplitud (int est) {
float mayor = tabla[est][0].amplitud(); for (int j=1;j<cantDias();j++) if mayor < tabla[est][j].amplitud(); mayor = tabla[est][j].amplitud();
return mayor; }
![Page 51: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/51.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
public float diaMayorAmplitud () {
float mayor = tabla[0][0].amplitud(); int dia = 0; for (int i=0;i<cantEstaciones();i++) for (int j=0;j<cantDias();j++) if mayor < tabla[i][j].amplitud(){ mayor = tabla[i][j].amplitud(); dia = j; } return dia; }Aunque mayorAmplitud() y diaMayorAmplitud() implementan diferentes servicios, la estructura de la solución es muy similar.
![Page 52: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/52.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
TempMinMaxRegion
Registro [][] tabla
<<consultas>>...contarMayorAmplitud(e:Estacion):realgenerarMayorAmp():Estacion
Estacion
float [] estacion
<<constructor>>Estacion(n:entero)<<comandos>>establecerEstacion(dia:entero,valor:real)<<consultas>>obtenerEstacion(dia:entero): real
Calcula la cantidad de días en los cuales la amplitud superó a un valor establecido para esa estación
Genera una estructura con la mayoramplitud de cada estación
![Page 53: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/53.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
public int contarMayorAmplitud(Estacion est) { //Calcula la cantidad de días en los cuales la amplitud superó a // un valor establecido para esa estación int cont =0; for (int i=0;i<cantEstaciones();i++){ for (int j=1;j<cantDias();j++) if (tabla[i][j].amplitud() > est.obtenerEst(i)); cont++; e.establecerEst(i,mayor); } return cont; } La estructura de control del recorrido es similar a las
implementaciones anteriores, la comparación involucra a dos estructuras de datos.
![Page 54: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/54.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
public Estacion generarMayorAmplitud () { float mayor; Estacion e = new Estacion (cantDias()); for (int i=0;i<cantEstaciones();i++){ mayor = tabla[i][0]; for (int j=1;j<cantDias();j++) if mayor < tabla[i][j].amplitud(); mayor = tabla[i][j].amplitud(); e.establecerEst(i,mayor); } return e; }La implementación de este servicio requiere recorrer una estructura de datos y generar otra.
![Page 55: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/55.jpg)
Introducción a la Programación Orientada a Objetos
Encapsulamiento
Analice qué cambios en la implementación provocarían las siguiente modificaciones de diseño:
• Las clases Cliente acceden a las estaciones meteorológicas y a los días comenzando con 1.
• Cada fila representa a un día del período y cada columna a una estación meteorológica.
![Page 56: Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.](https://reader036.fdocuments.ec/reader036/viewer/2022081518/5539a519550346397d8b4962/html5/thumbnails/56.jpg)
Introducción a la Programación Orientada a Objetos
En la clase de hoy…
•Distintas alternativas de representación de los datos para un mismo problema.
-Dos arreglos de reales
-Un arreglo de objetos de tipo clase
-Un arreglo de reales dos dimensiones
•Encapsulamiento: La interface entre la clase proveedora y las clases cliente.
• Diseño de algoritmos: Recorridos exhaustivos y no exhaustivos.
•Tester: Casos de Prueba.