Introduced the factory method Money.franc() everywhere in the tests.
Created the factory method Money.franc().
Added TODO-sin: Delete testFrancMultiplication?
Working on the TODO: Currency?
Added testCurrency().
Created abstract method Money.currency().
Implemented the abstract method Money.currency() in the 2 subclasses.
Extracted the constant return value of method Franc.currency() to a field of the class.
Moved the assignment of the field Franc.currency to the class' constructor.
Extracted the constant return value of method Dollar.currency() to a field of the class.
Moved the assignment of the field Dollar.currency to the class' constructor.
Pulled the member field currency and member method currency() of class Dollar and Franc up to the super class Money since they are identical.
Added a parameter currency to Franc's constructor so that we could move the constant strings 'USD' and 'CHF' to the static factory methods and the two constructors will be identical and we can create a common implementation.
Fixed the two callers of Franc's constructor.
Made method Franc.times() call the static factory method of class Money instead of the constructor of the class Franc.
The factory method Money.franc() passed actual parameter 'CHF'.
Assigned the formal parameter to the instance field in the constructor of the class Franc.
Added an actual parameter 'USD' in the caller of Dollar's constructor in the factory method Money.dollar().
Added a parameter currency to Dollar's constructor as Franc's.
Pulled the identical implementation of the constructors of the 2 subclasses to the superclass Money.