uebungen/solutions/src/main/java/pr2/intro/javadoc/Waehrung.java

143 lines
3.4 KiB
Java

package pr2.intro.javadoc;
/**
* Objekte dieser Klasse repräsentieren eine Währung. Eine Währung zeichnet
* sich durch einen Namen (z.B. EURO), ein Kürzel (z.B. € oder EUR) und einen
* Umrechnungskurs zum US-Dollar aus.
* <p>
* Objekte dieser Klasse sind imutable, d.h. sie können nach der Erzeugung
* nicht mehr verändert werden.
*/
public class Waehrung {
/**
* Teiler für die Nachkommastellen.
*/
private static final long TEILER = 10000;
/**
* Umrechnungskurs zum Dollar.
*/
private final int kurs;
/**
* Langer Name der Währung.
*/
private final String name;
/**
* Abkürzung zur Währung.
*/
private final String kuerzel;
/**
* Erzeugt ein neues Objekt.
*
* @param name Name der Währung (z.B. EURO).
* @param kuerzel Kürzel der Währung (z.B. €).
* @param kurs Wechselkurs zum Dollar.
*/
public Waehrung(String name, String kuerzel, double kurs) {
this.kurs = (int) (kurs * TEILER);
this.name = name;
this.kuerzel = kuerzel;
}
/**
* Rechnet einen Berag in der aktuellen Währung in eine andere Währung
* um.
*
* @param betrag Betrag der umgerechnet werden soll.
* @param toWaehrung die Zielwährung.
* @return Ergebnis der Umrechnung.
*/
public long umrechnen(long betrag, Waehrung toWaehrung) {
return betrag * kurs / toWaehrung.kurs;
}
/**
* Gibt den Kurs der aktuellen Währung zurück.
*
* @return Wechselkurs bezogen auf den US-Dollar.
*/
public int getKurs() {
return kurs;
}
/**
* Gibt den Namen der Währung zurück.
*
* @return Name der Währung (z.B. Euro oder Dollar).
*/
public String getName() {
return name;
}
/**
* Gibt das Kürzel für die Währung zurück.
*
* @return Das Kürzel der Währung (z.B. EUR oder $)
*/
public String getKuerzel() {
return kuerzel;
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return String.format("%s [%s] 1 %s = %.4f %s", name, kuerzel, "$",
kurs / (double) TEILER, kuerzel);
}
/**
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + kurs;
result = prime * result + ((kuerzel == null) ? 0 : kuerzel.hashCode());
return result;
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Waehrung other = (Waehrung) obj;
if (name == null) {
if (other.name != null) {
return false;
}
}
else if (!name.equals(other.name)) {
return false;
}
if (kurs != other.kurs) {
return false;
}
if (kuerzel == null) {
return other.kuerzel == null;
}
else {
return kuerzel.equals(other.kuerzel);
}
}
}