Ejercicio Recuperación - Problema 2. Clase StatVar y agrega… · Programació II UDL 2010

Tema: Diseño de clases y objetos en Java, herencia e igualdad · Del examen Exámenes de Recuperación y Tercer Parcial de Programación 2 (Curso 2010/2011) (2010)

Enunciado

Recuperación - Problema 2. Clase StatVar y agregación estadística

Se desea programar una clase en Java denominada StatVar orientada al cálculo progresivo de diversas medidas estadísticas (media, máximo y mínimo) a partir de los datos numéricos suministrados secuencialmente.

Por ejemplo, ante la siguiente secuencia de instrucciones:

StatVar v = new StatVar();

v.add(2.0);

v.add(4.0);

System.out.println("La media es " + v.getMean());

System.out.println("El máximo es " + v.getMax());

System.out.println("El mínimo es " + v.getMin()); El programa imprime por consola:

La media es 3.0

El máximo es 4.0

El mínimo es 2.0 Para optimizar el uso de memoria, no está permitido almacenar individualmente los datos suministrados; únicamente deben mantenerse la suma acumulada, el recuento de valores introducidos, el valor máximo y el valor mínimo observados.

Adicionalmente, se requieren dos variantes (de instancia y estática) de un método merge que permita combinar la información de dos instancias de StatVar, obteniendo un estado representativo del conjunto global.

La plantilla estructural de la clase es:

public class StatVar {

private double sum;

private int num;

private double max;

private double min;

public StatVar() {... }

public void add(double value) {... }

public double getMean() {... }

public double getMin() {... }

public double getMax() {... }

public void merge(StatVar other) {... }

public static StatVar merge(StatVar sv1, StatVar sv2) {... }

} Consideraciones:

No es necesario contemplar el caso de error en el que se solicite la media, el máximo o el mínimo sin haber agregado ningún dato previo.

Las constantes Double.MIN_VALUE (o -Double.MAX_VALUE) y Double.MAX_VALUE pueden resultar apropiadas para inicializar los límites numéricos.

Enunciado: Ejercicio Recuperación - Problema 2. Clase StatVar y agrega… · Programació II UDL 2010

Solución

Según los criterios oficiales de corrección

Implementar la clase StatVar completa con sus atributos y métodos constructores, observadores y de agregación (add, getMean, getMin, getMax, merge de instancia y merge estático)

Solución: ```java public class StatVar { private double sum; private int num; private double max; private double min; public StatVar() { this.sum = 0.0; this.num = 0; this.max = -Double.MAX_VALUE; this.min = Double.MAX_VALUE; } public void add(double value) { this.sum += value; this.num++; if (value > this.max) { this.max = value; } if (value < this.min) { this.min = value; } } public double getMean() { return this.sum / this.num; } public double getMin() { return this.min; } public double getMax() { return this.max; } public void merge(StatVar other) { if (other != null && other.num > 0) { this.sum += other.sum; this.num += other.num; if (other.max > this.max) { this.max = other.max; } if (other.min < this.min) { this.min = other.min; } } } public static StatVar merge(StatVar sv1, StatVar sv2) { StatVar res = new StatVar(); if (sv1 != null) { res.merge(sv1); } if (sv2 != null) { res.merge(sv2); } return res; } } ```

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

‹ Problema 3 · Juny 2011

Más ejercicios de Diseño de clases y objetos en Java, herencia e igualdad