BankAccount.java
package ch.hslu.exercises.sw08.ex3;
import java.util.concurrent.atomic.AtomicInteger;
public final class BankAccount {
private AtomicInteger balance;
/**
* Erzeugt ein Bankkonto mit einem Anfangssaldo.
*
* @param balance Anfangssaldo
*/
public BankAccount(final int balance) {
this.balance = new AtomicInteger(balance);
}
/**
* Erzeugt ein Bankkonto mit Kontostand Null.
*/
public BankAccount() {
this(0);
}
/**
* Gibt den aktuellen Kontostand zurück.
*
* @return Kontostand.
*/
public int getBalance() {
return this.balance.get();
}
/**
* Addiert zum bestehen Kontostand einen Betrag hinzu.
*
* @param amount Einzuzahlender Betrag
*/
public void deposite(final int amount) {
this.balance.addAndGet(amount);
}
/**
* Überweist einen Betrag vom aktuellen Bankkonto an ein Ziel-Bankkonto.
*
* @param target Bankkonto auf welches der Betrag überwiesen wird.
* @param amount zu überweisender Betrag.
*/
public void transfer(final BankAccount target, final int amount) {
this.balance.addAndGet(-amount);
target.deposite(amount);
}
}