1   package junit.samples.money;
2   
3   /***
4    * The common interface for simple Monies and MoneyBags
5    *
6    */
7   public interface IMoney {
8   	/***
9   	 * Adds a money to this money.
10  	 */
11  	public abstract IMoney add(IMoney m);
12  	/***
13  	 * Adds a simple Money to this money. This is a helper method for
14  	 * implementing double dispatch
15  	 */
16  	public abstract IMoney addMoney(Money m);
17  	/***
18  	 * Adds a MoneyBag to this money. This is a helper method for
19  	 * implementing double dispatch
20  	 */
21  	public abstract IMoney addMoneyBag(MoneyBag s);
22  	/***
23  	 * Tests whether this money is zero
24  	 */
25  	public abstract boolean isZero();
26  	/***
27  	 * Multiplies a money by the given factor.
28  	 */
29  	public abstract IMoney multiply(int factor);
30  	/***
31  	 * Negates this money.
32  	 */
33  	public abstract IMoney negate();
34  	/***
35  	 * Subtracts a money from this money.
36  	 */
37  	public abstract IMoney subtract(IMoney m);
38  	/***
39  	 * Append this to a MoneyBag m.
40  	 */
41  	public abstract void appendTo(MoneyBag m);
42  }