143 lines
3.4 KiB
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);
|
|
}
|
|
}
|
|
}
|