package histogram; public class ValuesImpl implements Values { private double[] values; private double sum; public ValuesImpl(double[] values) throws NegativeValueException { this.values = values.clone(); sum = 0; for (int i = 0; i < values.length; i++) { if (values[i] < 0) throw new NegativeValueException(i, values[i]); sum += values[i]; } } public double value(int i) { return values[i]; } public void changeValue(int i, double v) throws NegativeValueException { if (v < 0) throw new NegativeValueException(i, v); sum += v - values[i]; values[i] = v; } public int size() { return values.length; } public double sum() { return sum; } }