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
Programación Orientada a Objetos
El proceso de desarrollo de software
El Proceso de desarrollo de software
Problema abstracción DATOS ACCIONES Problemas y Programas Programa.
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.
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.
El proceso de desarrollo de software
Aplicación del paradigma orientado a objetos
Relaciones entre Clases La construcción de un sistema de software orientado a objetos consiste en definir un conjunto de clases relacionadas entre sí.
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.
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.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Patrones Creacionales
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tabla.
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
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.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
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 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.
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.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
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.
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
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 GUI.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
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
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 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

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Encapsulamiento. Caso de estudio: Estación Meteorológica. Resumen.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA El encapsulamiento es un mecanismo que permite la definición de módulos de software que pueden ser utilizados como “cajas negras”, esto es, sabiendo qué hacen sin saber cómo lo hacen. El encapsulamiento permite esconder los detalles de la implementación de un módulo, de modo que sus clientes sólo conozcan su funcionalidad. Si cambian la implementación de un módulo, en tanto no cambie su funcionalidad, los módulos que lo usan no se verán afectados. Se reducen así las dependencias entre diferentes unidades de software, de modo que estas son más fáciles de leer, verificar y modificar. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA En Java cada clase es un módulo de software. Los modificadores de acceso definen el nivel de encapsulamiento dentro de una clase. Cada miembro de una clase que se declara privado queda escondido y no es visible fuera de la clase. Si cambia su representación, el cambio es transparente para el exterior. Cada miembro de una clase que se declara público es visible fuera de la clase y por lo tanto puede ser accedido. Si cambia la representación, el cambio puede afectar a las clases relacionadas. Introducción a la Programación Orientada a Objetos IPOO

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Encapsulamiento. Caso de estudio: Estación Meteorológica. Resumen.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 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. Introducción a la Programación Orientada a Objetos IPOO Establecer casos de prueba

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Introducción a la Programación Orientada a Objetos IPOO TempMinMaxEst > real [] min real [] max > TempMinMaxEst(cant: entero) Crea una estructura para mantener las temperaturas mínimas y otra para las máximas, ambas con cant elementos inicializados en 0.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA TempMinMaxEst > Registro [] minmax > TempMinMaxEst(cant: entero) Crea una estructura para mantener objetos con las temperaturas mínimas y máximas de un período de cant días. Las inicializa en 0. Registro > min: real max: real > Registro (mi,ma:real) > establecerMin (m:real) establecerMax(m:real) > obtenerMin():real obtenerMax():real promedio():real

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Introducción a la Programación Orientada a Objetos IPOO TempMinMaxEst > real [] [] minmax > TempMinMaxEst(cant: entero) Crea una estructura para mantener las temperaturas de cant días y las inicializa en 0. La primera fila mantiene las temperaturas mínimas, la segunda fila mantiene las temperaturas máximas.

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Responsabilidades Requiere maxima >= minima para cada día del período. El primer día se denota con la posición 1. La cantidad de elementos se define en el momento de la creación. Todos los elementos ya están ingresados cuando se ejecutan las consultas. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TempMinMaxEst { private float [] max; private float [] min; /*Constructor Crea una estructura para mantener las temperaturas mínimas y otra para las máximas, ambas con cant elementos inicializados en 0.*/ public TempMinMaxEst(int cant) { max = new float[cant]; min = new float[cant]; }... } 11

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TempMinMaxEst { private Registro [] minmax; /*Constructor Crea una estructura para mantener objetos con las temperaturas mínimas y máximas de un período de cant días. Las inicializa en 0*/ public TempMinMaxEst (int cant){ minmax = new Registro [cant]; for (int dia = 0; dia < cant; dia++) minmax[dia] = new Registro(0,0); }... } 12

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA class TempMinMaxEst { private float [] [] minmax; /*Constructor Crea una estructura para mantener las temperaturas de cant días y las inicializa en 0. La primera fila mantiene las temperaturas mínimas, la segunda fila mantiene las temperaturas máximas.*/ public TempMinMaxEst(int cant) { minmax = new float[2][cant]; }... } 13

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 14 TempMinMaxEst > real [] min real [] max > TempMinMaxEst(cant: entero) > establecerTempMin(d:entero,t:real) establecerTempMax(d:entero,t:real) > obtenerTempMin(d: entero):real obtenerTempMax(d: entero):real

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 15 TempMinMaxEst > Registro [] minmax > TempMinMaxEst(cant: entero) > establecerTempMin(d:entero,t:real) establecerTempMax(d:entero,t:real) > obtenerTempMin(d: entero):real obtenerTempMax(d: entero):real Registro > min: real max: real > Registro(mi, ma: real) > establecerMin(m:real) establecerMax(m:real) > obtenerMin():real obtenerMax():real promedio():real

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 16 TempMinMaxEst > real [] [] minmax > TempMinMaxEst(cant: entero) > establecerTempMin(d:entero,t:real) establecerTempMax(d:entero,t:real) > obtenerTempMin(d: entero):real obtenerTempMax(d: entero):real

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] max; private float [] min; … //Comandos y Consultas triviales // Requieren max >= min, 1<= d <= cantDias() public void establecerTempMin (int d, float m){ min[d-1] = m; } public void establecerTempMax (int d, float m){ max[d-1] = m; } public float obtenerTempMin (int d){ return min[d-1]; } public float obtenerTempMax (int d){ return max[d-1]; } 17

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private Registro [] minmax; … //Comandos y Consultas triviales // Requieren max >= min, 1<= d <= cantDias() public void establecerTempMin (int d, float m){ minmax[d-1].establecerMin(m); } public void establecerTempMax (int d,float m){ minmax[d-1].establecerMax(m); } public float obtenerTempMin (int d){ return minmax[d-1].obtenerMin(); } public float obtenerTempMax (int d){ return minmax[d-1].obtenerMax(); } 18

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] [] minmax; … //Comandos y Consultas triviales // Requieren max >= min, 1<= d <= cantDias() public void establecerTempMin (int d, float m){ minmax[0][d-1] = m; } public void establecerTempMax (int d,float m){ minmax[1][d-1] = m; } public float obtenerTempMin (int d){ return minmax[0][d-1]; } public float obtenerTempMax (int d){ return minmax[1][d-1]; } 19

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA max 5 length est min 5 length est=new TempMinMaxEst(5); private float [] max; private float [] min; public TempMinMaxEst(int cant) { max = new float[cant]; min = new float[cant]; }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA est minmax 5 length est=new TempMinMaxEst(5); private Registro [] minmax; public TempMinMaxEst (int cant){ minmax = new Registro [cant]; for (int dia = 0;dia < dias;dia++) minmax[dia] = new Registro(0,0); }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 3 length est minmax 3 length est=new TempMinMaxEst(3); private float [] [] minmax; public TempMinMaxEst(int cant) { minmax= new float[2][cant]; } 2 length

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 23 TempMinMaxEst > real [] min real [] max > TempMinMaxEst(cant: entero) > establecerTempMin(d:entero,t:real) establecerTempMax(d:entero,t:real) > obtenerTempMin(d: entero):real obtenerTempMax(d: entero):real cantDias () : entero cantHeladas () : entero

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 24 TempMinMaxEst > Registro [] minmax > TempMinMaxEst(cant: entero) > establecerTempMin(d:entero,t:real) establecerTempMax(d:entero,t:real) > obtenerTempMin(d: entero):real obtenerTempMax(d: entero):real cantDias () : entero cantHeladas () : entero Registro > min: real max: real > Registro(mi, ma: real) > establecerMin(m:real) establecerMax(m:real) > obtenerMin():real obtenerMax():real promedio():real amplitud():real

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 25 TempMinMaxEst > real [] [] minmax > TempMinMaxEst(cant: entero) > establecerTempMin(d:entero,t:real) establecerTempMax(d:entero,t:real) > obtenerTempMin(d: entero):real obtenerTempMax(d: entero):real cantDias () : entero cantHeladas () : entero

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] [] minmax; public int cantDias (){ return minmax[0].length; } private Registro [] minmax; public int cantDias (){ return minmax.length; } private float [] min; private float [] max; public int cantDias (){ return min.length; } 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 Algoritmo cantHeladas DS contador inicializar el contador en 0 para cada día si heló incrementar el contador El algoritmo no depende de la estructura de datos

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo cantHeladas DS contador inicializar el contador en 0 para cada día si heló incrementar el contador public int cantHeladas(){ //Computa la cantidad de días en los que heló. int cant=0; for (int i=0;i<cantDias();i++) if (min[i]<=0) cant++; return cant; } class TempMinMaxEst { private float [] max; private float [] min;

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo cantHeladas DS contador inicializar el contador en 0 para cada día si heló incrementar el contador public int cantHeladas(){ //Computa la cantidad de días en los que heló. int cant=0; for (int i=0;i<cantDias();i++) if (minmax[i].obtenerMin()<=0) cant++; return cant; } class TempMinMaxEst { private Registro [] minmax;

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo cantHeladas DS contador inicializar el contador en 0 para cada día si heló incrementar el contador public int cantHeladas(){ //Computa la cantidad de días en los que heló. int cant=0; for (int i=0;i<cantDias();i++) if (minmax[0][i]<=0) cant++; return cant; } class TempMinMaxEst { private float [][] minmax;

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 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("La cantidad de heladas es " + est.cantHeladas() ); } … } 31

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public static int leerCantDias() { int cant; do{ System.out.println("Ingrese la cantidad de días "); cant=ES.leerEntero(); } while (cant <= 0); return cant; } 32

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public static void leerTempEst(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) ; } 33

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 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) ); } 34 La clase Cliente no conoce la estructura de datos porque está encapsulada, los cambios en la representación de los atributos no afectan a TestTempMinMaxEst

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 35 TempMinMaxEst > … mayorPromedio () : real heloTodo(): entero amplitudMayor(g:real) : boolean minmaxSigMayor (g:real):boolean amplitudSigMayor(g:real):boolean Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo mayorPromedio DS mayor mayor  calcula el promedio del primer día para cada día a partir del segundo promedio  calcula el promedio del día si promedio > mayor mayor  promedio public float mayorPromedio(){ /*Computa el mayor promedio entre la máxima y la mínima diaria/* }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo amplitudMayor DE g para cada día del período y mientras no se verifica la propiedad si la amplitud térmica fue mayor a g se verifica la propiedad public boolean amplitudMayor(float g){ /*Decide 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*/. … }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo minmaxSigMayor DE g para cada día del período y mientras no se verifica la propiedad si la diferencia con la máxima del dia siguiente es mayor a g O la diferencia con la mínima del dia siguiente es mayor a g Se verifica la propiedad public boolean minmaxSigMayor(float g){ /*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.*/ … }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Algoritmo amplitudSigMayor DE g para cada día del período y mientras no se verifica la propiedad si la diferencia entre la amplitud del día y la amplitud del dia siguiente es mayor a g Se verifica la propiedad public boolean amplitudSigMayor(float g){ /*Decidir si entre dos días consecutivos, la diferencia entre las amplitudes térmicas fue mayor que un cierto valor g*/ … }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] max; private float [] min;... // Consultas public float mayorPromedio(){ /*Computa el mayor promedio entre la máxima y la mínima diaria/* float mayor = (min[0] + max[0])/2; for (int i=1;i<cantDias();i++) if ((max[i] + min[i])/2 > mayor) mayor = (max[i]+min[i])/2; return mayor; } 40 Recorrido Exhaustivo

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] max; private float [] min;... // Consultas public boolean amplitudMayor(float g){ /*Decide 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*/. boolean encontre = false; int i=0; while ((i<cantDias()) && (!encontre)) if ((max[i] - min[i]) > g) encontre = true; else i++; return encontre; } 41 Recorrido NO Exhaustivo

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] max; private float [] min;... // Consultas public boolean minmaxSigMayor(float g){ /*Decide 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.*/ boolean encontre = false; int i=0; while ((i<cantDias()-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; } 42 Recorrido NO Exhaustivo

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [] max; private float [] min;... // Consultas public boolean amplitudSigMayor(float g){ /*Decide si entre dos días consecutivos, la diferencia entre las amplitudes térmicas fue mayor que un cierto valor g*/ boolean encontre=false; int i=0; while ((i<cantDias()-1) && (!encontre)) if (Math.abs((max[i]-min [i])- (max[i+1]-min[i+1]))>g) encontre=true; else i++; return encontre; } 43

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 44 TempMinMaxEst > Registro [] minmax > TempMinMaxEst(cant: entero) … Registro > min: real max: real > Registro(mi, ma: real) > establecerMin(m:real) establecerMax(m:real) > obtenerMin():real obtenerMax():real promedio():real amplitud():real

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private Registro [] minmax; … //Consultas public float mayorPromedio(){ //Calcula el mayor promedio del período float mayor = minmax[0].promedio(); float m; for (int i=1;i<cantDias();i++){ m = minmax[i].promedio(); if (m > mayor) mayor = m; } return mayor; } 45

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA private float [][] minmax;... // Consultas public float mayorPromedio(){ //Calcular el mayor promedio del período float mayor = (minmax[0][0] + minmax[1][0]) / 2; float m; for (int i=1; i<cantDias(); i++){ m = (minmax[0][i] + minmax[1][i]) / 2; if (m > mayor) mayor = m; } return mayor; } 46

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 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. Introducción a la Programación Orientada a Objetos IPOO

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Encapsulamiento. Caso de estudio: Estación Meteorológica. Resumen.

RESUMEN Encapsulamiento: La interface entre la clase proveedora y las clases cliente. Distintas alternativas de representación de los datos para un mismo problema. -Dos arreglos de elementos de tipo elemental real. -Un arreglo de objetos de clase Registro. -Un arreglo de dos dimensiones de elementos de tipo elemental real. Introducción a la Programación Orientada a Objetos IPOO