package Bibliothek; import java.time.LocalDate; public abstract class Medien { protected String titel; protected String id; protected int erscheinungsjahr; protected boolean verfuegbar; protected LocalDate rueckgabedat; public Medien(String titel, String id, int erscheinungsjahr) { this.titel = titel; this.id = id; this.erscheinungsjahr = erscheinungsjahr; this.verfuegbar = true; } public String getTitel() { return titel; } public void setTitel(String titel) { this.titel = titel; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getErscheinungsjahr() { return erscheinungsjahr; } public void setErscheinungsjahr(int er) { this.erscheinungsjahr = er; } public abstract int getAusleihdauer(); public abstract int getMaxVerlaengerungen(); public void ausleihen() { if (verfuegbar) { verfuegbar = false; rueckgabedat = LocalDate.now().plusWeeks(getAusleihdauer()); System.out.println("Ausgeliehen bis: " + rueckgabedat); } else { System.out.println("Nicht verfügbar."); } } public boolean verlaengern(int aktuelleVerlaengerungen) { if (aktuelleVerlaengerungen < getMaxVerlaengerungen()) { rueckgabedat = rueckgabedat.plusWeeks(getAusleihdauer()); return true; } return false; } public void zurueckgeben() { verfuegbar = true; rueckgabedat = null; } public abstract String getDetails(); }