OOP Konto mit einer Methode für eine Klasse Bank erstellen

Kartoschka

Mitglied
Implementieren Sie eine Klasse Bank zur Darstellung der Banken. Die Klasse Bank hat eine Bankleitzahl (bankCode) vom Typ Integer und ein Array von Bankkonten (Account) mit einer initialen Länge von 4. Implementieren Sie einen geeigneten Konstruktor, der die Bankleitzahl entgegennimmt und diese initialisiert.

int createAccount(int accountNumber): Diese Methode repräsentiert das Anlegen eines Kontos mit der Kontonummer accountNumber innerhalb der Bank. Jedes Konto, das innerhalb dieser Bank erstellt wird, bekommt die Bankleitzahl der Bank. Das neue Konto wird im ersten freien Feld des Arrays der Konten innerhalb der Bank eingefügt. Die Methode gibt schließlich zurück, zu welchem Array-Index das Konto hinzugefügt wurde. Werden mehr Konten erzeugt als die Größe des Arrays, wird intern die Länge des Arrays um seine bisherige Länge verdoppelt. Das neue Konto wird, wie oben beschrieben, dem Array hinzugefugt.

Hier erstmal die Klasse Account zur Darstellung der Konten:
Java:
public class Account {
 
  private int accountNumber; // Kontonummer
  private int bankCode;      // Bankleitzahl
  private int balance;       // Kontostand
 
  // Konstruktor
 
  public Account(int bankCode, int accountNumber) {
    this.bankCode = bankCode;
    this.accountNumber = accountNumber;
    this.balance = 0;
  }
  // Methode zur Auszahlung
  public boolean withdraw(int amount) {
    if (amount <= balance) {
      balance = balance - amount;
      return true;
    } else {
      return false;
    }
  }
  // Methode zur Einzahlung
  public void deposit(int amount) {
    balance = balance + amount;
  }
  // set und get Methoden
  public void setAccountNumber(int accountNumber) {
    this.accountNumber = accountNumber;
  }
  public int getAccountNumber() {
    return accountNumber;
  }
  public void setBankCode(int bankCode) {
    this.bankCode = bankCode;
  }
  public int getBankCode() {
    return bankCode;
  }

}

Klasse Bank:
Java:
public class Bank {

  //Attribute
  private int bankCode;

  //Array erstellen
  private Account[] account = new Account[4];

  //Konstruktor
  public Bank(int bankCode) {
    this.bankCode = bankCode;
  }

  //Konto erstellen und Array-Index zurückgeben
  public int createAccount(int accountNumber) {

  }

  //set und get Methoden
  public void setBankCode(int bankCode) {
    this.bankCode = bankCode;
  }
 
  public int getBankCode() {
    return bankCode;
  }

}

Hier habe ich ein Problem bei der Methode int createAccount(int accountNumber). Wie kann ich einen Integer-Wert zurückgeben, der den Array-Index des erstellten Accounts angibt, sowie in der Aufgabe beschrieben?
 

Joose

Top Contributor
Naja wie entscheidest du auf welchen Index vom Array "account" dein neuer Account gesetzt wird?
Wahrscheinlich wirst du eine for-Schleife verwenden und diese hat eine Zählervariable welche dann den gleich dem Index ist. ;)
 

Kartoschka

Mitglied
Ich habe das jetzt mal nur für das einfügen eines Kontos ausprobiert:
Java:
  public int createAccount(int accountNumber) {
    int index;
    for (index = 0;account.length > index;index++) {
      account[index] = new Account(this.bankCode, accountNumber);
    }
    return index;
  }

Das erstellten Kontos werden zwar im Index gespeichert, aber es gibt nur die Länge des Arrays zurück und nicht zu welchem Array-Index das Konto hinzugefügt wurde. Was sollte also nach return stehen? ... return account[index] funktioniert da ja nicht
 

Joose

Top Contributor
Dir fehlt eine Prüfung ob auf dem entsprechenden Index schon ein Account Objekt gespeichert ist.
Wenn ja darfst du diese natürlich nicht überschreiben.
Ist der Index leer, dann erstellst du ein neues Objekt und brichst die Schleife ab (dann hast du auch den entsprechenden Index)
 

klauskarambulut

Bekanntes Mitglied
Du solltest auch den Teil der Aufgabe vom KIT- "Programmieren für Analphabeten" in betracht ziehen, den du noch nicht gepostet hast.

Das löschen eines Kontos sorgt dafür, dass keine Lücken entstehen.
Zudem sollst du noch die Anzahl der vorhandenen Konten (size()) sowie, die länge des Arrays (length()) ausgeben.

Daraus kann man dann folgendes für das hinzufügen von Konten schließen:
while(size() >= length()) {
doubleArraySize();
}
account[size()] = new Account(...);

Jetzt ist die Frage, was macht man mit size(). Iteriert man da durch das Array und schaut, was nicht null ist und summiert das auf oder nutzt man eine Variable die man dann beim hinzufügen, löschen verändert.
 

Neue Themen


Oben