View Javadoc

1   package cz.cuni.amis.utils.statistic;
2   
3   /**
4    * Represents interface to the moving average value.
5    * 
6    * @author Jimmy
7    *
8    * @param <TYPE>
9    */
10  public interface IMovingAverage<TYPE> {
11  
12  	/**
13  	 * Add another item into the moving average.
14  	 * @param item
15  	 */
16  	public void add(TYPE item);
17  	
18  	/**
19  	 * Returns an average of all items stored.
20  	 * <p><p>
21  	 * Returns null if no values are stored.
22  	 * @return
23  	 */
24  	public TYPE getAverage();
25  	
26  	/**
27  	 * Return current number of items that are used to compute the average returned
28  	 * via {@link IMovingAverage#getAverage()}. 
29  	 * @return
30  	 */
31  	public int getCurrentLength();
32  	
33  	/**
34  	 * Return max number of consecutive items (added via {@link IMovingAverage#add(Object)} that are used to
35  	 * compute the average returned via {@link IMovingAverage#getAverage()}. 
36  	 * @return
37  	 */
38  	public int getMaxLength();
39  
40  	/**
41  	 * Sets number of items that the object requires for the computing of the average.
42  	 * (Note that computation is done all the time, but when there is enough items == set number,
43  	 * the {@link IMovingAverage#isEnoughValues()} reports true.)
44  	 * 
45  	 * @param length
46  	 */
47  	public void setMaxLength(int length);
48  	
49  	/**
50  	 * Whether the object has enough values to compute the avarage according to the max numbers it
51  	 * may store (returns {@link IMovingAverage#getCurrentLength()} == {@link IMovingAverage#getMaxLength()}.
52  	 * 
53  	 * @returns whether you may use {@link IMovingAverage#getAverage()} with the result that is desirable (i.e., the object has enough
54  	 *          items to compute the average from) 
55  	 */
56  	public boolean isEnoughValues();
57  	
58  	/**
59  	 * Resets the object -> it removes all items stored. The {@link IMovingAverage#getAverage()} will return
60  	 * null after the call.
61  	 */
62  	public void reset();
63  	
64  	
65  }