package lab6;

public class MeasurableCollection implements DataSet{
	/*properties*/
	private Measurable [] _collection;
	private int _index;

	/*constructor*/
	private MeasurableCollection(final Measurable[]collection){
		_collection = collection;
		_index = 0;
	}

	/*static factory*/
	public static MeasurableCollection fromSize(int size){
		return new MeasurableCollection(new Measurable[size]);
	}

	/*implements DataSet*/
	public void add(Measurable x) {
		if(_index >= _collection.length)
			throw new ArrayIndexOutOfBoundsException();
		_collection[_index++] = x;
	}

	public double getAverage() {
		double sum = 0;
		for (int i=0;i<_index;i++)
			sum += _collection[i].getMeasure();
		return sum/_index;
	}

	public Measurable getMaximum() {
		Measurable max = _collection[0];
		for (int i=1;i<_index;i++)
			if (max.getMeasure() < _collection[i].getMeasure())
				max = _collection[i];
		return max;
	}

	public Measurable getMinimum() {
		Measurable min = _collection[0];
		for (int i=1;i<_index;i++)
			if (min.getMeasure() > _collection[i].getMeasure())
				min = _collection[i];
		return min;
	}

}
