/** * The class Currency allows to create objects representing the currency of a * country. Each currency is characterized by its name and contains as data * its exchange rate in euro. This class gives also methods allowing to * convert an amount from the currency to euro and reverse. The exchange rate * in euro may be changed. */ public class Currency { private final String name; private double exchangeRateInEuro; public Currency(String name, double exchangeRateInEuro) { this.name = name; this.exchangeRateInEuro = exchangeRateInEuro; } /* * This method is final to forbid name changing by redefinition. */ public final String name() { return name; } public double exchangeRateInEuro() { return exchangeRateInEuro; } public void modifyExchangeRateInEuro(double newRate) { exchangeRateInEuro = newRate; } public double convertInEuro(double amount) { return amount / exchangeRateInEuro; } public double convertFromEuro(double amount) { return amount * exchangeRateInEuro; } public boolean equals(Object o) { // if o is null, return false because null is not an instance of Currency. return o instanceof Currency && name.equals(((Currency) o).name); } public String toString() { return "Currency " + name; } public int hashCode() { return name.hashCode(); } }