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.

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.