/** * * Repräsentation einer Bank mit einem Namen und einer Liste von eröffneten * Konten. * * @author Annabelle Klarl * */ public class Bank { private String name; private BankKonto[] konten; private int anzahlEroeffneterKonten; /** * Konstruktor * * @param name * @param maxAnzahlKonten */ public Bank(String name, int maxAnzahlKonten) { this.name = name; this.konten = new BankKonto[maxAnzahlKonten]; this.anzahlEroeffneterKonten = 0; } /** * Diese Methode liefert den Namen der Bank * * @return */ public String getName() { return this.name; } /** * Diese Methode eröffnet ein Konto mit der gegebenen Kontonummer und dem * gegebenen Anfangsbetrag. Dazu wird zunächst ein neues Objekt der Klasse * {@link BankKonto} erzeugt, dieses der Bank hinzugefügt und true * zurückgegeben. Ist die Bank schon voll (d.h. wird die Maximalanzahl an * Konten für diese Bank überschritten), wird das Konto nicht eröffnet und * false zurückgegeben. * * @param kontoNummer * @param anfangsBetrag * @return false falls die Maximalanzahl an Konten überschritten wurde, true * sonst */ public boolean kontoEroeffnen(int kontoNummer, double anfangsBetrag) { if (this.anzahlEroeffneterKonten < this.konten.length) { this.konten[this.anzahlEroeffneterKonten] = new BankKonto( kontoNummer, anfangsBetrag); this.anzahlEroeffneterKonten++; return true; } return false; } /** * Diese Methode sucht in der Liste der Konten der Bank das Konto mit der * gegebenen Kontonummer. Wird ein Konto gefunden, wird dieses * zurückgegeben. Falls kein Konto mit dieser Kontonummer existiert, wird * null zurückgegeben. * * @param kontoNummer * @return das Objekt der Klasse {@link BankKonto} mit der gegebenen * Kontonummer; null falls kein Konto mit dieser Kontonummer * eröffnet wurde. */ private BankKonto sucheBankkonto(int kontoNummer) { for (int i = 0; i < this.anzahlEroeffneterKonten; i++) { BankKonto aktuellesKonto = this.konten[i]; if (aktuellesKonto.getKontoNummer() == kontoNummer) { return aktuellesKonto; } } return null; } /** * Diese Methode zahlt den gegebenen Betrag auf das Konto mit der gegebenen * Kontonummer ein. Falls der Betrag eingezahlt werden konnte, wird true * zurückgegeben. Falls kein Konto mit dieser Kontonummer existiert, wird * false zurückgegeben. * * @param kontoNummer * @param betrag * @return false falls kein Konto mit dieser Kontonummer existiert, true * sonst */ public boolean einzahlen(int kontoNummer, double betrag) { BankKonto aktuellesKonto = this.sucheBankkonto(kontoNummer); if (aktuellesKonto != null) { aktuellesKonto.einzahlen(betrag); return true; } else { return false; } } /** * Diese Methode hebt den gegebenen Betrag vom Konto mit der gegebenen * Kontonummer ab. Falls der Betrag abgehoben werden konnte, wird true * zurückgegeben. Falls kein Konto mit dieser Kontonummer existiert, wird * false zurückgegeben. * * @param kontoNummer * @param betrag * @return false falls kein Konto mit dieser Kontonummer existiert, true * sonst */ public boolean abheben(int kontoNummer, double betrag) { BankKonto aktuellesKonto = this.sucheBankkonto(kontoNummer); if (aktuellesKonto != null) { aktuellesKonto.abheben(betrag); return true; } else { return false; } } /** * Diese Methode gibt den Kontostand des Kontos mit der gegebenen * Kontonummer aus. Falls kein Konto mit dieser Kontonummer existiert, wird * {@link Integer#MIN_VALUE} zurückgegeben. * * @param kontoNummer * @return der Kontostand des Kontos oder {@link Integer#MIN_VALUE}, falls * kein Konto mit der gegebenen Kontonummer existiert */ public double kontoStand(int kontoNummer) { BankKonto aktuellesKonto = this.sucheBankkonto(kontoNummer); if (aktuellesKonto != null) { return aktuellesKonto.getKontoStand(); } else { return Integer.MIN_VALUE; } } /** * Diese Methode gibt dem Gesamtsaldo über alle Konten zurück. * * @return der Gesamtsaldo aller Konten dieser Bank */ public double gesamtSaldo() { double gesamtSaldo = 0.0; for (int i = 0; i < this.anzahlEroeffneterKonten; i++) { BankKonto aktuellesKonto = this.konten[i]; gesamtSaldo = gesamtSaldo + aktuellesKonto.getKontoStand(); } return gesamtSaldo; } }