diff --git a/Brechnung.txt b/Brechnung.txt index 6eb30b7..e9d725b 100644 --- a/Brechnung.txt +++ b/Brechnung.txt @@ -1,5 +1,5 @@ -Wie kann ich die Vererbung für Medienarten am besten strukturieren, um die unterschiedlichen Ausleihregeln und Fälligkeitsdaten zu unterstützen? Sollten die spezifischen Regeln (z. B. Ausleihfrist, Anzahl der Verlängerungen) direkt in den Medientypklassen definiert sein, oder wäre eine zentrale Verwaltung sinnvoller? +Wie kann ich die Vererbung für Medienarten am besten strukturieren, um die unterschiedlichen Ausleihregeln und Fälligkeitsdaten zu unterstützen? Sollten die spezifischen Regeln (z. B. Ausleihfrist, Anzahl der Verlängerungen) direkt in den Medientypklassen definiert sein, oder wäre eine zentrale fassade.Verwaltung sinnvoller? -Wie detailliert sollte die Benutzerverwaltung aufgebaut sein? Wäre es beispielsweise besser, getrennte Klassen für „Erwachsene“ und „Schüler/Studenten“ zu erstellen, oder würde eine allgemeine Benutzerklasse mit einem Attribut für den Benutzertyp ausreichen? Und wie lässt sich der Admin-Status am besten einbinden? +Wie detailliert sollte die Benutzerverwaltung aufgebaut sein? Wäre es beispielsweise besser, getrennte Klassen für „Erwachsene“ und „Schüler/Studenten“ zu erstellen, oder würde eine allgemeine Benutzerklasse mit einem Attribut für den Benutzertyp ausreichen? Und wie lässt sich der backend.benutzer.Admin-Status am besten einbinden? -Wie detailliert muss die Gebührenverwaltung implementiert sein, insbesondere für überfällige Medien? Soll die Logik für Gebührenberechnung und -verwaltung direkt in die Medien- oder Benutzerklassen integriert werden, oder wäre es besser, diese in eine separate Klasse oder ein Interface für mehr Flexibilität auszulagern? +Wie detailliert muss die Gebührenverwaltung implementiert sein, insbesondere für überfällige backend.medium.Medien? Soll die Logik für Gebührenberechnung und -verwaltung direkt in die backend.medium.Medien- oder Benutzerklassen integriert werden, oder wäre es besser, diese in eine separate Klasse oder ein Interface für mehr Flexibilität auszulagern? diff --git a/Creator.java b/Creator.java deleted file mode 100644 index b20908d..0000000 --- a/Creator.java +++ /dev/null @@ -1,30 +0,0 @@ -class Creator { - // Factory-Methode für Benutzer - static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) { - if (art.equalsIgnoreCase("e")) { - return new Benutzer.Erwachsener(name, nachname, kundennummer); // Erstelle einen Erwachsenen - } else if (art.equalsIgnoreCase("s")) { - return new Benutzer.SchuelerStudent(name, nachname, kundennummer, art); // Erstelle einen Schüler/Studenten - } else { - return null; // Unbekannte Benutzerart - } - } - - // Factory-Methode für Medien - public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) { - switch (art.toLowerCase()) { - case "buch": - return new Medien.Book(name, regisseur, id, erscheinungsjahr); - case "dvd": - return new Medien.Dvds(name, regisseur, id); - case "cd": - return new Medien.Cds(name, id); - case "sb": - return new Medien.Brettspiel(name, id); - case "videospiel": - return new Medien.Videospiel(name, regisseur, id); - default: - throw new IllegalArgumentException("Unbekannter Medientyp: " + art); - } - } -} diff --git a/Medien.java b/Medien.java deleted file mode 100644 index 47329f7..0000000 --- a/Medien.java +++ /dev/null @@ -1,162 +0,0 @@ -// Interface für 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 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=1; // Aktuelle Anzahl an durchgeführten Verlängerungen - protected 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; - this.aktuelleVerlängerungen = 0; // Initialisierung ohne Verlängerungen - // Initialer Status: nicht ausgeliehen - } - - // Getter-Methoden - public String getName() { - return name; - } - - public int getId() { - return id; - } - - // Implementierung der 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 void zurückgeben() { - istAusgeliehen = false; - } - - // Unterklasse für Bücher - public static class Book extends Medien - { - private String autor; - private int erscheinungsjahr; - - public Book(String name, String autor, int id, int erscheinungsjahr) { - super(name, id, 4, 3); // Frist für Bücher ist 4 Wochen, bis zu 3 Mal verlängerbar - this.autor = autor; - this.erscheinungsjahr = erscheinungsjahr; - } - - // Getter-Methoden für spezifische Eigenschaften von Büchern - public String getAutor() { - return autor; - } - - public int getErscheinungsjahr() { - return erscheinungsjahr; - } - - @Override - public String toString() { - return "Buch: " + name + " von " + autor + " (ID: " + id + ", Jahr: " + erscheinungsjahr + ")"; - } - } - - // Unterklasse für DVDs - public static class Dvds extends Medien { - private String regisseur; - - public Dvds(String name, String regisseur, int id) { - super(name, id, 7, 0); // Frist für DVDs ist 1 Woche, keine Verlängerung möglich - this.regisseur = regisseur; - } - - // Getter-Methoden für spezifische Eigenschaften von DVDs - public String getRegisseur() { - return regisseur; - } - - @Override - public String toString() { - return "DVD: " + name + " von " + regisseur + " (ID: " + id + ")"; - } - } - - // Unterklasse für CDs - public static class Cds extends Medien { - public Cds(String name, int id) { - super(name, id, 14, 0); // Frist für CDs ist 2 Wochen, keine Verlängerung möglich - } - - @Override - public String toString() { - return "CD: " + name + " (ID: " + id + ")"; - } - } - - // Unterklasse für Brettspiele - public static class Brettspiel extends Medien { - public Brettspiel(String name, int id) { - super(name, id, 14, 0); // Frist für Brettspiele ist 2 Wochen, keine Verlängerung möglich - } - - @Override - public String toString() { - return "Brettspiel: " + name + " (ID: " + id + ")"; - } - } - - // Unterklasse für Videospiele - public static class Videospiel extends Medien { - private String entwickler; - - public Videospiel(String name, String entwickler, int id) { - super(name, id, 28 , 1); // Frist für Videospiele ist 4 Wochen, einmal verlängerbar - this.entwickler = entwickler; - } - - // Getter-Methoden für spezifische Eigenschaften von Videospielen - public String getEntwickler() { - return entwickler; - } - - @Override - public String toString() { - return "Videospiel: " + name + " von " + entwickler + " (ID: " + id + ")"; - } - } -} diff --git a/Main.java b/UI/Main.java similarity index 84% rename from Main.java rename to UI/Main.java index 0e3f118..e82d441 100644 --- a/Main.java +++ b/UI/Main.java @@ -1,3 +1,10 @@ +package UI; + +import backend.creator.*; // Importiert alle Klassen aus dem benutzer-Paket +import fassade.*; +// Creator gehört zum benutzer-Paket + + public class Main { public static void main(String[] args) { // Erstelle die Instanzen @@ -16,10 +23,10 @@ public class Main { verwaltung.mediensListe.add(creator.factoryMedien("Minecraft", "Mojang", 9, "videospiel", 0)); verwaltung.mediensListe.add(creator.factoryMedien("The Witcher 3", "CD Projekt", 10, "videospiel", 0)); - // Erstelle die Fassade mit der Verwaltung + // Erstelle die fassade mit der fassade Fassade fassade = new Fassade(verwaltung); - // UI mit der Fassade initialisieren + // UI mit der fassade.Fassade initialisieren Ui ui = new Ui(fassade); // Anmeldung starten diff --git a/Ui.java b/UI/Ui.java similarity index 89% rename from Ui.java rename to UI/Ui.java index 2b0c78a..81f82b3 100644 --- a/Ui.java +++ b/UI/Ui.java @@ -1,8 +1,14 @@ +package UI; + +import backend.benutzer.*; +import fassade.*; + import java.time.LocalDate; import java.util.Scanner; - +import backend.creator.Creator; public class Ui { + private final Fassade fassade; private final Scanner scanner; @@ -15,11 +21,11 @@ public class Ui { boolean weiter = true; while (weiter) { System.out.println("Bitte wählen Sie eine Option:"); - System.out.println("1. Medien durchsuchen"); + System.out.println("1.Medien durchsuchen"); System.out.println("2. Benutzer registrieren"); System.out.println("3. Benutzer anmelden"); - System.out.println("4. Medien ausleihen"); - System.out.println("5. Medien zurückgeben"); + System.out.println("4. ausleihen"); + System.out.println("5.Medien zurückgeben"); System.out.println("6. Medien verlängern"); System.out.println("7. Gebühren einsehen"); System.out.println("8. Zeit verschieben"); @@ -44,11 +50,11 @@ public class Ui { } private void durchsuchenMedien() { - System.out.print("Suchbegriff (oder 'all' für alle Medien): "); + System.out.print("Suchbegriff (oder 'all' für alle backend.medium.Medien): "); String suchbegriff = scanner.nextLine(); var ergebnisse = fassade.durchsuchenMedien(suchbegriff); if (ergebnisse.isEmpty()) { - System.out.println("Keine Medien gefunden."); + System.out.println("Keine backend.medium.Medien gefunden."); } else { ergebnisse.forEach(m -> System.out.println(m)); } @@ -62,7 +68,7 @@ public class Ui { System.out.print("Benutzertyp (e für Erwachsener, s für Schüler/Student): "); String art = scanner.nextLine(); - // Erstelle den Benutzer über die Creator-Fabrikmethode + // Erstelle den Benutzer über die backend.benutzer.Creator-Fabrikmethode Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde. if (benutzer != null) { @@ -87,7 +93,7 @@ public class Ui { } private void ausleihen() { - System.out.print("Medien ID: "); + System.out.print("backend.medium.Medien ID: "); int medienId = scanner.nextInt(); System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); @@ -105,7 +111,7 @@ public class Ui { } private void rueckgabe() { - System.out.print("Medien ID: "); + System.out.print("backend.medium.Medien ID: "); int medienId = scanner.nextInt(); System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); @@ -123,7 +129,7 @@ public class Ui { } private void verlaengern() { - System.out.print("Medien ID: "); + System.out.print("backend.medium.Medien ID: "); int medienId = scanner.nextInt(); System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); diff --git a/Admin.java b/backend/benutzer/Admin.java similarity index 83% rename from Admin.java rename to backend/benutzer/Admin.java index 8de60dd..527fc7d 100644 --- a/Admin.java +++ b/backend/benutzer/Admin.java @@ -1,9 +1,11 @@ +package backend.benutzer; + class Admin { private final String name = "zabih"; private final String nachname = "Mansuri"; private final int passwort = 1234; - private final String art = "Admin"; + private final String art = "backend.benutzer.Admin"; // Getter-Methoden public String getName() { @@ -24,7 +26,7 @@ class Admin { @Override public String toString() { - return "Admin{" + + return "backend.benutzer.Admin{" + "Name='" + name + '\'' + ", Nachname='" + nachname + '\'' + ", Passwort=" + passwort + diff --git a/Benutzer.java b/backend/benutzer/Benutzer.java similarity index 79% rename from Benutzer.java rename to backend/benutzer/Benutzer.java index 8080e29..29c40ae 100644 --- a/Benutzer.java +++ b/backend/benutzer/Benutzer.java @@ -1,4 +1,7 @@ -abstract class Benutzer { +// Datei: Benutzer.java +package backend.benutzer; + +public abstract class Benutzer { private String name; private String nachname; private int kundennummer; @@ -66,21 +69,4 @@ abstract class Benutzer { ", Ausstehende Gebühren=" + gebuehren + '}'; } - - // Spezifische Benutzertypen als Unterklassen - public static class Erwachsener extends Benutzer { - public Erwachsener(String name, String nachname, int kundennummer) { - super(name, nachname, kundennummer, "Erwachsener"); - } - } - - public static class SchuelerStudent extends Benutzer { - public SchuelerStudent(String name, String nachname, int kundennummer,String art) { - super(name, nachname, kundennummer,art); - } - } } - - - - diff --git a/backend/benutzer/Erwachsener.java b/backend/benutzer/Erwachsener.java new file mode 100644 index 0000000..e541e1d --- /dev/null +++ b/backend/benutzer/Erwachsener.java @@ -0,0 +1,8 @@ +// Datei: Erwachsener.java +package backend.benutzer; + +public class Erwachsener extends Benutzer { + public Erwachsener(String name, String nachname, int kundennummer) { + super(name, nachname, kundennummer, "Erwachsener"); + } +} diff --git a/backend/benutzer/SchuelerStudent.java b/backend/benutzer/SchuelerStudent.java new file mode 100644 index 0000000..9a094fe --- /dev/null +++ b/backend/benutzer/SchuelerStudent.java @@ -0,0 +1,8 @@ +// Datei: SchuelerStudent.java +package backend.benutzer; + +public class SchuelerStudent extends Benutzer { + public SchuelerStudent(String name, String nachname, int kundennummer, String art) { + super(name, nachname, kundennummer, art); + } +} diff --git a/backend/creator/Creator.java b/backend/creator/Creator.java new file mode 100644 index 0000000..1cf5d4c --- /dev/null +++ b/backend/creator/Creator.java @@ -0,0 +1,34 @@ +package backend.creator; // Creator gehört zum benutzer-Paket +import backend.medium.*; // Importiert alle Klassen aus dem medium-Paket +import backend.benutzer.*;// Optional, falls du auf die anderen Benutzer-Klassen zugreifen möchtest + +public class Creator { + // Factory-Methode für Benutzer + public static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) { + if (art.equalsIgnoreCase("e")) { + return new Erwachsener(name, nachname, kundennummer); // Erstelle einen Erwachsenen + } else if (art.equalsIgnoreCase("s")) { + return new SchuelerStudent(name, nachname, kundennummer, art); // Erstelle einen Schüler/Studenten + } else { + return null; // Unbekannte Benutzerart + } + } + + // Factory-Methode für backend.medium.Medien + public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) { + switch (art.toLowerCase()) { + case "buch": + return new Book(name, regisseur, id, erscheinungsjahr); + case "dvd": + return new Dvds(name, regisseur, id); + case "cd": + return new Cds(name, id); + case "sb": + return new Brettspiel(name, id); + case "videospiel": + return new Videospiel(name, regisseur, id); + default: + throw new IllegalArgumentException("Unbekannter Medientyp: " + art); + } + } +} diff --git a/backend/medium/Book.java b/backend/medium/Book.java new file mode 100644 index 0000000..19f4eab --- /dev/null +++ b/backend/medium/Book.java @@ -0,0 +1,26 @@ +package backend.medium; + +public class Book extends Medien { + private String autor; + private int erscheinungsjahr; + + public Book(String name, String autor, int id, int erscheinungsjahr) { + super(name, id, 4, 3); // Frist für Bücher ist 4 Wochen, bis zu 3 Mal verlängerbar + this.autor = autor; + this.erscheinungsjahr = erscheinungsjahr; + } + + // Getter-Methoden für spezifische Eigenschaften von Büchern + public String getAutor() { + return autor; + } + + public int getErscheinungsjahr() { + return erscheinungsjahr; + } + + @Override + public String toString() { + return "Buch: " + name + " von " + autor + " (ID: " + id + ", Jahr: " + erscheinungsjahr + ")"; + } +} diff --git a/backend/medium/Brettspiel.java b/backend/medium/Brettspiel.java new file mode 100644 index 0000000..ae26574 --- /dev/null +++ b/backend/medium/Brettspiel.java @@ -0,0 +1,12 @@ +package backend.medium; + +public class Brettspiel extends Medien { + public Brettspiel(String name, int id) { + super(name, id, 14, 0); // Frist für Brettspiele ist 2 Wochen, keine Verlängerung möglich + } + + @Override + public String toString() { + return "backend.medium.Brettspiel: " + name + " (ID: " + id + ")"; + } +} diff --git a/backend/medium/Cds.java b/backend/medium/Cds.java new file mode 100644 index 0000000..c94815c --- /dev/null +++ b/backend/medium/Cds.java @@ -0,0 +1,12 @@ +package backend.medium; + +public class Cds extends Medien { + public Cds(String name, int id) { + super(name, id, 14, 0); // Frist für CDs ist 2 Wochen, keine Verlängerung möglich + } + + @Override + public String toString() { + return "CD: " + name + " (ID: " + id + ")"; + } +} diff --git a/backend/medium/Dvds.java b/backend/medium/Dvds.java new file mode 100644 index 0000000..6d70b34 --- /dev/null +++ b/backend/medium/Dvds.java @@ -0,0 +1,20 @@ +package backend.medium; + +public class Dvds extends Medien { + private String regisseur; + + public Dvds(String name, String regisseur, int id) { + super(name, id, 7, 0); // Frist für DVDs ist 1 Woche, keine Verlängerung möglich + this.regisseur = regisseur; + } + + // Getter-Methoden für spezifische Eigenschaften von DVDs + public String getRegisseur() { + return regisseur; + } + + @Override + public String toString() { + return "DVD: " + name + " von " + regisseur + " (ID: " + id + ")"; + } +} diff --git a/backend/medium/Medien.java b/backend/medium/Medien.java new file mode 100644 index 0000000..785d288 --- /dev/null +++ b/backend/medium/Medien.java @@ -0,0 +1,76 @@ +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; + } +} diff --git a/backend/medium/Videospiel.java b/backend/medium/Videospiel.java new file mode 100644 index 0000000..c8208d6 --- /dev/null +++ b/backend/medium/Videospiel.java @@ -0,0 +1,20 @@ +package backend.medium; + +public class Videospiel extends Medien { + private String entwickler; + + public Videospiel(String name, String entwickler, int id) { + super(name, id, 28, 1); // Frist für Videospiele ist 4 Wochen, einmal verlängerbar + this.entwickler = entwickler; + } + + // Getter-Methoden für spezifische Eigenschaften von Videospielen + public String getEntwickler() { + return entwickler; + } + + @Override + public String toString() { + return "backend.medium.Videospiel: " + name + " von " + entwickler + " (ID: " + id + ")"; + } +} diff --git a/Aausleihe.java b/fassade/Aausleihe.java similarity index 88% rename from Aausleihe.java rename to fassade/Aausleihe.java index 9473273..e843794 100644 --- a/Aausleihe.java +++ b/fassade/Aausleihe.java @@ -1,3 +1,8 @@ +package fassade; + +import backend.medium.Medien; +import backend.benutzer.*; + import java.time.LocalDate; public class Aausleihe { @@ -6,7 +11,7 @@ public class Aausleihe { private LocalDate date; // Ausleihdatum private LocalDate rueckgabeDatum; // Rückgabedatum - // Konstruktor für die Aausleihe + // Konstruktor für die fassade.Aausleihe Aausleihe(Medien medien, Benutzer benutzer, LocalDate date, LocalDate rueckgabeDatum) { this.medien = medien; this.benutzer = benutzer; @@ -41,7 +46,7 @@ public class Aausleihe { @Override public String toString() { - return "Aausleihe{" + + return "fassade.Aausleihe{" + "medien=" + medien + ", benutzer=" + benutzer + ", ausleihdatum=" + date + diff --git a/Fassade.java b/fassade/Fassade.java similarity index 80% rename from Fassade.java rename to fassade/Fassade.java index 6ab965b..ae24eca 100644 --- a/Fassade.java +++ b/fassade/Fassade.java @@ -1,3 +1,7 @@ +package fassade; + +import backend.medium.Medien; +import backend.benutzer.*; import java.time.LocalDate; import java.util.List; @@ -14,7 +18,7 @@ public class Fassade { // Benutzer registrieren public void registriereBenutzer(Benutzer benutzer) { - verwaltung.addBenutzer(benutzer); // Benutzer zur Verwaltung hinzufügen + verwaltung.addBenutzer(benutzer); // Benutzer zur fassade.Verwaltung hinzufügen } // Benutzer anmelden @@ -25,14 +29,14 @@ public class Fassade { .orElse(null); // Gibt null zurück, wenn Benutzer nicht gefunden wurde } - // Medien durchsuchen + // backend.medium.Medien durchsuchen public List durchsuchenMedien(String suchbegriff) { - // Rufe die Methode in der Verwaltung auf und übergebe die medienListe + // Rufe die Methode in der fassade.Verwaltung auf und übergebe die medienListe return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff); } - // Medien ausleihen + // backend.medium.Medien ausleihen public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) { Medien medien = verwaltung.mediensListe.stream() .filter(m -> m.getId() == medienId) @@ -42,16 +46,16 @@ public class Fassade { if (medien != null) { verwaltung.addAL(medien, benutzer, ausleihDatum, rueckgabeDatum); // Leihe das Medium aus } else { - System.out.println("Medien nicht gefunden."); + System.out.println("backend.medium.Medien nicht gefunden."); } } - // Medien zurückgeben + // backend.medium.Medien zurückgeben public void rueckgabe(int medienId, Benutzer benutzer, LocalDate rueckgabeDatum) { verwaltung.rueckgabe(medienId, benutzer, rueckgabeDatum); // Rückgabe des Mediums } - // Medien verlängern + // backend.medium.Medien verlängern public void verlaengern(int medienId, Benutzer benutzer) { Medien medien = verwaltung.mediensListe.stream() .filter(m -> m.getId() == medienId) @@ -61,7 +65,7 @@ public class Fassade { if (medien != null) { verwaltung.verlängern(medien, benutzer); // Verlängere die Leihfrist } else { - System.out.println("Medien nicht gefunden."); + System.out.println("backend.medium.Medien nicht gefunden."); } } diff --git a/Verwaltung.java b/fassade/Verwaltung.java similarity index 87% rename from Verwaltung.java rename to fassade/Verwaltung.java index f10d98d..4d8d981 100644 --- a/Verwaltung.java +++ b/fassade/Verwaltung.java @@ -1,4 +1,8 @@ -import javax.crypto.spec.PSource; +package fassade; +import backend.benutzer.*; + import backend.medium.*; + import backend.creator.Creator; + import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.*; @@ -8,8 +12,8 @@ import java.util.stream.Collectors; public class Verwaltung { - LinkedList mediensListe = new LinkedList<>(); - LinkedList benutzerListe = new LinkedList<>(); + public LinkedList mediensListe = new LinkedList<>(); + public LinkedList benutzerListe = new LinkedList<>(); static LinkedList ausliste = new LinkedList<>(); Long wochenDauer; @@ -53,15 +57,15 @@ public class Verwaltung { boolean gefunden = false; // Überprüfe, ob die Art des Mediums im Suchbegriff enthalten ist - if (medien instanceof Medien.Book) { + if (medien instanceof Book) { gefunden |= "buch".contains(suchbegriffKlein); - } else if (medien instanceof Medien.Dvds) { + } else if (medien instanceof Dvds) { gefunden |= "dvd".contains(suchbegriffKlein); - } else if (medien instanceof Medien.Cds) { + } else if (medien instanceof Cds) { gefunden |= "cd".contains(suchbegriffKlein); - } else if (medien instanceof Medien.Brettspiel) { - gefunden |= "sb".contains(suchbegriffKlein); // "sb" für Brettspiel - } else if (medien instanceof Medien.Videospiel) { + } else if (medien instanceof Brettspiel) { + gefunden |= "sb".contains(suchbegriffKlein); // "sb" für backend.medium.Brettspiel + } else if (medien instanceof Videospiel) { gefunden |= "videospiel".contains(suchbegriffKlein); } @@ -80,10 +84,10 @@ public class Verwaltung { System.out.println("Das Medium ist bereits ausgeliehen."); } else { - Aausleihe aausleihe = new Aausleihe(medien, benutzer, ausleihDatum,reuckgabeDatum); // Neues Aausleihe-Objekt erstellen + Aausleihe aausleihe = new Aausleihe(medien, benutzer, ausleihDatum,reuckgabeDatum); // Neues fassade.Aausleihe-Objekt erstellen ausliste.add(aausleihe); medien.istAusgeliehen = true; - medien.maxVerlängerungen--; + } } @@ -132,9 +136,9 @@ public class Verwaltung { void rueckgabe(int medienId, Benutzer benutzer, LocalDate rueckgabeDatum) { - // Durchsuche die Ausleihen (ausliste) nach einer Übereinstimmung mit Medien-ID und Benutzer-ID + // Durchsuche die Ausleihen (ausliste) nach einer Übereinstimmung mit backend.medium.Medien-ID und Benutzer-ID for (Aausleihe ausleihe : ausliste) { - // Vergleiche Medien-ID und Benutzer-ID + // Vergleiche backend.medium.Medien-ID und Benutzer-ID if (ausleihe.getMedien().getId() == medienId && ausleihe.getBenutzer().equals(benutzer)) { // Wenn das Medium und der Benutzer übereinstimmen ausleihe.setRueckgabeDatum(rueckgabeDatum); // Setze das Rückgabedatum @@ -153,7 +157,7 @@ public class Verwaltung { public void verbuchenGebuehren(Benutzer benutzer) { - // Admin prüft, ob Gebühren vorhanden sind + // backend.benutzer.Admin prüft, ob Gebühren vorhanden sind double gebuehren = benutzer.getGebuehren(); if (gebuehren > 0) { System.out.println("Gebühren von " + gebuehren + "€ wurden erfolgreich verbucht."); @@ -168,10 +172,9 @@ public class Verwaltung { for (Aausleihe aausleihe : ausliste) { // Überprüfen, ob das richtige Medium und der richtige Benutzer vorliegen if (aausleihe.getMedien().equals(medien) && aausleihe.getBenutzer().equals(benutzer)) { - if (medien.verlängern() && medien.kannVerlängern()) { // Medien.verlängern() prüft, ob noch Verlängerungen möglich sind + if (medien.kannVerlängern()) { // backend.medium.Medien.verlängern() prüft, ob noch Verlängerungen möglich sind System.out.println("Das Medium wurde erfolgreich verlängert. Aktuelle Verlängerungen: " + medien.getMaxVerlängerungen()); - medien.maxVerlängerungen--; - medien.aktuelleVerlängerungen++; + medien.verlängern(); } else { System.out.println("Keine weitere Verlängerung möglich. Maximale Anzahl erreicht."); }