Bib1/backend/medium/Medien.java

77 lines
2.2 KiB
Java

package backend.medium;
// Interface für backend.medium.Medien, die ausgeliehen werden können
interface Ausleihbar {
int getMaxVerlängerungen(); // Gibt die maximale Anzahl an Verlängerungen zurück
boolean kannVerlängern(); // Prüft, ob das Medium verlängerbar ist
boolean verlängern(); // Verlängert das Medium, wenn möglich
}
// Abstrakte Basisklasse für alle backend.medium.Medien
public abstract class Medien implements Ausleihbar {
protected String name;
protected int id;
protected int frist; // Standard-Ausleihfrist in Wochen
protected int maxVerlängerungen; // Maximale Anzahl an möglichen Verlängerungen
protected int aktuelleVerlängerungen = 0; // Aktuelle Anzahl an durchgeführten Verlängerungen
public boolean istAusgeliehen; // Status, ob das Medium ausgeliehen ist
// Konstruktor
public Medien(String name, int id, int frist, int maxVerlängerungen) {
this.name = name;
this.id = id;
this.frist = frist;
this.maxVerlängerungen = maxVerlängerungen;
}
// Getter-Methoden
public String getName() {
return name;
}
public int getId() {
return id;
}
// Implementierung der backend.medium.Ausleihbar-Methoden
@Override
public int getMaxVerlängerungen() {
return maxVerlängerungen;
}
@Override
public boolean kannVerlängern() {
return aktuelleVerlängerungen < maxVerlängerungen;
}
@Override
public boolean verlängern() {
if (kannVerlängern()) {
aktuelleVerlängerungen++;
return true; // Verlängerung erfolgreich
}
return false; // Keine Verlängerung mehr möglich
}
public boolean istAusgeliehen() {
return istAusgeliehen;
}
public void ausleihen() {
if (!istAusgeliehen) {
istAusgeliehen = true;
} else {
System.out.println("Das Medium ist bereits ausgeliehen.");
}
}
public int getAktuelleVerlängerungen() {
return aktuelleVerlängerungen;
}
public void zurückgeben() {
istAusgeliehen = false;
}
}