This class can solve the coin change problem for a given amount.
It can take a given change amount and computes the smallest number of a given set of available coins to make up the change amount.
The class may consider an infinite number of coins of each value or just a limited number of coins of each one.