package junit.samples.money;
/**
* The common interface for simple Monies and MoneyBags
*/
public interface IMoney {
/**
* Adds a money to this money.
*/
IMoney add(IMoney m);
/**
* Adds a simple Money to this money. This is a helper method for
* implementing double dispatch
*/
IMoney addMoney(Money m);
/**
* Adds a MoneyBag to this money. This is a helper method for
* implementing double dispatch
*/
IMoney addMoneyBag(MoneyBag s);
/**
* Tests whether this money is zero
*/
boolean isZero();
/**
* Multiplies a money by the given factor.
*/
IMoney multiply(int factor);
/**
* Negates this money.
*/
IMoney negate();
/**
* Subtracts a money from this money.
*/
IMoney subtract(IMoney m);
/**
* Append this to a MoneyBag m.
* appendTo() needs to be public because it is used
* polymorphically, but it should not be used by clients
* because it modifies the argument m.
*/
void appendTo(MoneyBag m);
}