package Bibliothek; import java.time.LocalDate; import java.util.function.Consumer; public class Kunde extends User { private boolean istStudent; // True, wenn Kunde ein Student ist private double gebuehren; ; // Offene Gebühren public Kunde(String id, String name, boolean istStudent) { super(id, name); this.istStudent = istStudent; this.gebuehren = 0.0; } public boolean istStudent() { return istStudent; } public double getGebuehren() { return gebuehren; } public void addGebuehren(double betrag) { if (betrag > 0) { this.gebuehren += betrag; } } public void gebuehrenErhoehen(double betrag) { this.gebuehren += betrag; } public double berechneGesamtgebuehren(LocalDate aktuellesDatum) { return ausgelieheneMedien.stream() .mapToDouble(medien -> medien.berechneGebuehren(aktuellesDatum)) .sum(); } public Medien sucheAusgeliehenesMedium(String medienId) { return ausgelieheneMedien.stream() .filter(medien -> medien.getId().equalsIgnoreCase(medienId)) .findFirst() .orElse(null); } public boolean medienVerlaengern(Medien medien) { Consumer verlaengerung = m -> { if (ausgelieheneMedien.contains(m) && m.verlaengern()) { // Kein Argument übergeben System.out.println("Medium verlängert: " + m.getTitel()); } else { System.out.println("Verlängerung nicht möglich."); } }; verlaengerung.accept(medien); return false; } }