Aufgaben-Python/courses/java/16_master_abschlussprojekt_banking_system/Aufgabe.java

58 lines
No EOL
1.8 KiB
Java

package de.syntaxwerk.aufgabe16;
import java.util.*;
public class Aufgabe {
public static class BankAccount {
private final String iban;
private final String inhaber;
private double saldo;
public BankAccount(String iban, String inhaber, double startSaldo) {
this.iban = iban;
this.inhaber = inhaber;
this.saldo = startSaldo;
}
// 🎯 TEILZIEL 1 (TODO 1): Einzahlung und Auszahlung
public synchronized boolean einzahlen(double betrag) {
if (betrag <= 0) return false;
this.saldo += betrag;
return true;
}
public synchronized boolean abheben(double betrag) {
if (betrag <= 0 || betrag > this.saldo) return false;
this.saldo -= betrag;
return true;
}
public String getIban() { return iban; }
public String getInhaber() { return inhaber; }
public double getSaldo() { return saldo; }
}
public static class BankSystem {
private final Map<String, BankAccount> konten = new HashMap<>();
// 🎯 TEILZIEL 2 (TODO 2): Konto anlegen und Überweisung durchführen
public void kontoHinzufuegen(BankAccount konto) {
konten.put(konto.getIban(), konto);
}
public boolean ueberweisen(String vonIban, String zuIban, double betrag) {
BankAccount von = konten.get(vonIban);
BankAccount zu = konten.get(zuIban);
if (von == null || zu == null || betrag <= 0) return false;
if (von.abheben(betrag)) {
zu.einzahlen(betrag);
return true;
}
return false;
}
public double getGesamteinlagen() {
return konten.values().stream().mapToDouble(BankAccount::getSaldo).sum();
}
}
}