61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
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<Medien> 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;
|
|
}
|
|
|
|
}
|