Compare commits

...

2 Commits

Author SHA1 Message Date
Oliver Hummel 9d4a7aca59 Erweiterung mit Geheimnisprinzip 2024-01-16 13:29:33 +01:00
Oliver Hummel 353797a7a2 Einfache Persistenz hinzugefügt. 2023-12-19 17:06:45 +01:00
3 changed files with 69 additions and 3 deletions

View File

@ -1,8 +1,15 @@
package bank;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
public class Bank {
public class Bank implements Serializable {
private String name;
private ArrayList<Bankkonto> kontenliste;
@ -16,6 +23,8 @@ public class Bank {
kontenliste.add(bk);
// Speichern Methode 2: geänderte Daten speichern
saveBankData(); // bzw. der Einfachheit halber: alle Daten ;-)
return bk.getKontonummer();
}
@ -23,6 +32,19 @@ public class Bank {
return this.name;
}
// public ArrayList<Bankkonto> getKontenliste() {
public String[] getKontendaten() {
// kontendaten ist ein sog. DTO = Data Transfer Object
String[] kontendaten = new String[kontenliste.size()];
for (int i = 0; i < kontenliste.size(); i++) {
kontendaten[i] = kontenliste.get(i).toString();
}
return kontendaten;
}
public boolean geldEinzahlen(int kontonummer, double betrag) {
Bankkonto bk = kontoFinden(kontonummer);
@ -43,4 +65,30 @@ public class Bank {
return null;
}
// Die folgenden Persistenz-Methoden würde man in der Praxis in eine eigene
// Klasse auslagern.
private void saveBankData() {
ObjectOutputStream oos;
try {
oos = new ObjectOutputStream(new FileOutputStream("BankData.ser"));
oos.writeObject(this);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static Bank loadBankData() {
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("BankData.ser"));
return (Bank) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
System.err.println("Keine Daten gespeichert, initialisiere alle Daten neu.");
}
return new Bank("Spaßkasse");
}
}

View File

@ -3,10 +3,12 @@ package bank;
import java.util.Scanner;
public class BankUI {
private static Bank bank = new Bank("Spaßkasse");
private static Bank bank;
private static Scanner kb = new Scanner(System.in);
public static void main(String[] args) {
bank = new Bank("Spaßkasse"); //Bank.loadBankData();
willkommen();
hauptmenü();
}
@ -22,6 +24,7 @@ public class BankUI {
System.out.println("Aufgabe auswählen:");
System.out.println("1) Konto anlegen");
System.out.println("2) Geld einzahlen");
System.out.println("3) Kontenliste anzeigen");
System.out.println("9) Programm beenden");
System.out.print("Eingabe > ");
@ -31,6 +34,7 @@ public class BankUI {
switch (eingabe) {
case 1 -> kontoAnlegenScreen();
case 2 -> geldEinzahlenScreen();
case 3 -> kontenlisteAnzeigenScreen();
case 9 -> aufWiedersehenScreen();
}
@ -57,6 +61,14 @@ public class BankUI {
System.out.println("Geld einzahlen " + (erg?"": "nicht ") + "erfolgreich.");
}
private static void kontenlisteAnzeigenScreen() {
System.out.println("Hier sind die Konten:");
for (String ke : bank.getKontendaten()) {
System.out.println(ke.toString());
}
}
private static void aufWiedersehenScreen() {
System.out.println("Danke für Ihren Besuch und auf baldiges Wiedersehen!");
System.exit(0);

View File

@ -1,8 +1,9 @@
package bank;
import java.io.Serializable;
import java.util.ArrayList;
public class Bankkonto {
public class Bankkonto implements Serializable {
// sog. Geheimnisprinzip, Attribute bleiben
// privat, Zugriff erfolgt nur über Methoden
private String name;
@ -52,4 +53,9 @@ public class Bankkonto {
return null;
}
@Override
public String toString() {
return "Bankkonto [name=" + name + ", kontonummer=" + kontonummer + "]";
}
}