package LibrarySystem.domain.benutzern; import LibrarySystem.domain.medien.*; import java.util.*; public abstract class Benutzer { private String kartennummer; private String name; private int alter; private List ausleihen; private double offeneGebuehren; Benutzer(String kartennummer, String name, int alter, String prefix) { this.kartennummer = prefix + kartennummer; this.name = name; this.alter = alter; this.ausleihen = new ArrayList<>(); this.offeneGebuehren = 0.0; } //Getter und Setter public String getKartennummer() {return kartennummer;} public void setkartennummer(String kartennummer) {this.kartennummer = kartennummer;} public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAlter() {return alter;} public void setAlter(int alter) {this.alter = alter;} public List getAusleihen() {return ausleihen;} public double getOffeneGebuehren() {return offeneGebuehren;} // Abstrakte Methode für die Jahresgebühr public abstract double getJahresgebuehr(); //Methode fürs Ausleihen public void ausleihen(Medium medium) { if(!medium.istAusgeliehen()){ ausleihen.add(medium); medium.ausleihen(); //System.out.println(name + " hat \"" + medium.getTitel() + "\" ausgeliehen. Rückgabefrist: " + medium.getRueckgabedatum()); } else{ System.out.println("Das Medium ist bereits ausgeliehen."); } //gebuehrenBezahlt = false; // Neue Ausleihe bedeutet potenziell offene Gebühren } //Methode für die Rückgabe public void rueckgabe(Medium medium) { if(ausleihen.contains(medium)){ ausleihen.remove(medium); medium.rueckgabeMedium(); } else{ System.out.println("Dieses Medium von diesem Benutzer nicht ausgeliehen."); } } //Methode zum Anzeigen der Ausleihen eines Benutzers public void anzeigenAusleihen() { if(ausleihen.isEmpty()){ System.out.println("Keine ausgeliehenen Medien."); }else { System.out.println("Aktuell ausgeliehene Medien von " + name + ":\n"); for (Medium medium : ausleihen) { System.out.println("- " + medium.getTitel() + " (Fällig am: " + medium.getRueckgabedatum() + ")\n"); } } } public double addiereZuOffeneGebuehren(double gebuehren){ return this.offeneGebuehren+= gebuehren; } /*public void aktualisiereGebuehren(Date aktuellesDatum) { if (gebuehrenBezahlt) return; // Keine Aktualisierung erforderlich, wenn bezahlt offeneGebuehren = 0.0; for (Medium ausleihe : ausleihen) { offeneGebuehren += ausleihe.berechneGebuehren(aktuellesDatum); } }*/ public void bezahleGebuehren() { offeneGebuehren = 0.0; } @Override public String toString() { return "Name: " + name + ", Alter: " + alter + ", Kartennummer: " + kartennummer; } }