01: /**
02:    Computes the average of a set of data values.
03: */
04: public class DataSet
05: {
06:    /**
07:       Constructs an empty data set.
08:    */
09:    public DataSet()
10:    {
11:       sum = 0;
12:       count = 0;
13:       maximum = null;
14:    }
15: 
16:    /**
17:       Adds a data value to the data set.
18:       @param x a data value
19:    */
20:    public void add(Measurable x)
21:    {
22:       sum = sum + x.getMeasure();
23:       if (count == 0 || maximum.getMeasure() < x.getMeasure())
24:          maximum = x;
25:       count++;
26:    }
27: 
28:    /**
29:       Gets the average of the added data.
30:       @return the average or 0 if no data has been added
31:    */
32:    public double getAverage()
33:    {
34:       if (count == 0) return 0;
35:       else return sum / count;
36:    }
37: 
38:    /**
39:       Gets the largest of the added data.
40:       @return the maximum or 0 if no data has been added
41:    */
42:    public Measurable getMaximum()
43:    {
44:       return maximum;
45:    }
46: 
47:    private double sum;
48:    private Measurable maximum;
49:    private int count;
50: }