Erste Kommentare hinzugefügt als auch nach Tests erweiterung des Programms um Anforderungen zu erfüllen

development
Leon Maximilian Löhle 2024-11-19 10:37:32 +01:00
parent f29119eb09
commit 9a4e99d73c
13 changed files with 196 additions and 58 deletions

View File

@ -36,9 +36,4 @@ public class Admin extends User {
System.out.println("- " + medien.getTitel() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")") System.out.println("- " + medien.getTitel() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")")
); );
} }
@Override
public void rolleAnzeigen() {
System.out.println("Admin: " + name);
}
} }

View File

@ -1,5 +1,6 @@
package Bibliothek; package Bibliothek;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -9,6 +10,8 @@ public class Bibliotheksverwaltung {
private Map<String, Kunde> kundenListe; private Map<String, Kunde> kundenListe;
private Map<String, Admin> adminListe; private Map<String, Admin> adminListe;
private User eingeloggterBenutzer; private User eingeloggterBenutzer;
private LocalDate aktuellesDatum = LocalDate.now();
public Bibliotheksverwaltung() { public Bibliotheksverwaltung() {
medienBestand = new HashMap<>(); medienBestand = new HashMap<>();
@ -16,6 +19,9 @@ public class Bibliotheksverwaltung {
adminListe = new HashMap<>(); adminListe = new HashMap<>();
} }
/**
* Getter Methoden
*/
public Map<String, Kunde> getKundenListe() { public Map<String, Kunde> getKundenListe() {
return kundenListe; return kundenListe;
} }
@ -28,24 +34,63 @@ public class Bibliotheksverwaltung {
return eingeloggterBenutzer; return eingeloggterBenutzer;
} }
public List<Medien> sucheMedienNachTitel(String titel) { public LocalDate getAktuellesDatum() {
return aktuellesDatum;
}
/**
* Setter für Datumsmanipulation
*
* @param datum
*/
public void setAktuellesDatum(LocalDate datum) {
this.aktuellesDatum = datum;
System.out.println("Systemdatum auf " + aktuellesDatum + " gesetzt.");
}
/**
* Methode mit der man nach Medien suchen kann und angezeigt bekommt ob die Medien geführt werden, ob sie
* verfügbar sind oder ob sie ausgeliehen sind sowohl als auch bis wann ausgeliehen
*
* @param titel
* @return
*/
public List<String> sucheMedienNachTitel(String titel) {
return medienBestand.values().stream() return medienBestand.values().stream()
.filter(medien -> medien.getTitel().toLowerCase().contains(titel.toLowerCase())) .filter(medien -> medien.getTitel().toLowerCase().contains(titel.toLowerCase()))
.map(medien -> {
String status = medien.verfuegbar()
? "[Verfügbar]"
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + "]";
return medien.getDetails() + " " + status;
})
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
/**
* Zeigt alle Medien die in der Bib geführt werden, ebenfalls mit der Info verfügbar oder ausgeliehen
*/
public void alleMedienAnzeigen() { public void alleMedienAnzeigen() {
if (medienBestand.isEmpty()) { if (medienBestand.isEmpty()) {
System.out.println("Keine Medien im Bestand."); System.out.println("Keine Medien im Bestand.");
} else { } else {
System.out.println("Medienbestand:"); System.out.println("Medienbestand:");
medienBestand.values().forEach(m -> medienBestand.values().forEach(medien -> {
System.out.println("- " + m.getDetails() + String status = medien.verfuegbar()
(m.verfuegbar() ? " [Verfügbar]" : " [Ausgeliehen]")) ? "[Verfügbar]"
); : "[Ausgeliehen bis: " + medien.getRueckgabedat() + "]";
System.out.println("- " + medien.getDetails() + " " + status);
});
} }
} }
/**
* Methode um ein Medium auszuleihen
* Kunde muss dafür eingeloggt sein, Medium kann nicht mehrfach ausgeliehen werden
*
* @param medienId
*/
public void medienAusleihen(String medienId) { public void medienAusleihen(String medienId) {
medienId = medienId.trim().toUpperCase(); // Normalisierung medienId = medienId.trim().toUpperCase(); // Normalisierung
Medien medien = medienBestand.get(medienId); Medien medien = medienBestand.get(medienId);
@ -68,12 +113,16 @@ public class Bibliotheksverwaltung {
System.out.println("Medium erfolgreich ausgeliehen: " + medien.getTitel()); System.out.println("Medium erfolgreich ausgeliehen: " + medien.getTitel());
} }
/**
* Kunde gibt sein ausgeliehens Medium zurück, wenn er überzogen hat
* wird dem konto die Überziehungsgebühr addiert
*
* @param medienId
* @param kundenId
*/
public void medienZurueckgeben(String medienId, String kundenId) { public void medienZurueckgeben(String medienId, String kundenId) {
Medien medien = medienBestand.get(medienId); Medien medien = medienBestand.get(medienId);
Kunde kunde = kundenListe.get(kundenId); Kunde kunde = kundenListe.get(kundenId);
if (medien == null) { if (medien == null) {
System.out.println("Medium nicht gefunden."); System.out.println("Medium nicht gefunden.");
return; return;
@ -83,14 +132,20 @@ public class Bibliotheksverwaltung {
return; return;
} }
if (kunde.getAusgelieheneMedien().contains(medien)) { if (kunde.getAusgelieheneMedien().contains(medien)) {
double gebuehren = medien.berechneGebuehren(aktuellesDatum);
kunde.addGebuehren(gebuehren); // Gebühren hinzufügen
kunde.medienZurueckgeben(medien); kunde.medienZurueckgeben(medien);
medien.setVerfuegbar(true); medien.setVerfuegbar(true);
System.out.println("Medium erfolgreich zurückgegeben: " + medien.getTitel()); System.out.println("Medium erfolgreich zurückgegeben: " + medien.getTitel());
if (gebuehren > 0) {
System.out.println("Überziehungsgebühren: " + gebuehren + " € wurden dem Konto hinzugefügt.");
}
} else { } else {
System.out.println("Dieses Medium wurde nicht von diesem Kunden ausgeliehen."); System.out.println("Dieses Medium wurde nicht von diesem Kunden ausgeliehen.");
} }
} }
public void medienVerlaengern(String medienId, String kundenId, int aktuelleVerlaengerungen) { public void medienVerlaengern(String medienId, String kundenId, int aktuelleVerlaengerungen) {
Medien medien = medienBestand.get(medienId); Medien medien = medienBestand.get(medienId);
Kunde kunde = kundenListe.get(kundenId); Kunde kunde = kundenListe.get(kundenId);
@ -157,6 +212,7 @@ public class Bibliotheksverwaltung {
System.out.println("Kein Benutzer ist eingeloggt."); System.out.println("Kein Benutzer ist eingeloggt.");
} }
} }
public Kunde registriereKunde(String name, boolean istStudent) { public Kunde registriereKunde(String name, boolean istStudent) {
String prefix = istStudent ? "S" : "K"; String prefix = istStudent ? "S" : "K";
int maxId = kundenListe.keySet().stream() int maxId = kundenListe.keySet().stream()
@ -172,4 +228,32 @@ public class Bibliotheksverwaltung {
return neuerKunde; return neuerKunde;
} }
public void zeigeAusgelieheneMedien() {
if (!(eingeloggterBenutzer instanceof Kunde)) {
System.out.println("Nur eingeloggte Kunden können ausgeliehene Medien anzeigen.");
return;
}
Kunde kunde = (Kunde) eingeloggterBenutzer;
List<Medien> ausgelieheneMedien = kunde.getAusgelieheneMedien();
if (ausgelieheneMedien.isEmpty()) {
System.out.println("Es wurden keine Medien ausgeliehen.");
} else {
System.out.println("Ausgeliehene Medien:");
ausgelieheneMedien.forEach(medien -> {
double gebuehren = medien.berechneGebuehren(aktuellesDatum);
String status = medien.verfuegbar()
? "[Verfügbar]"
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + ", Gebühren: " + gebuehren + " €]";
System.out.println("- " + medien.getDetails() + " " + status);
});
}
}
public void pruefeUeberzogeneMedien() {
System.out.println("Überzogene Medien (Stand: " + aktuellesDatum + "):");
medienBestand.values().stream()
.filter(medien -> !medien.verfuegbar() && medien.istUeberzogen(aktuellesDatum))
.forEach(medien -> System.out.println("- " + medien.getDetails() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")"));
}
} }

View File

@ -5,7 +5,7 @@ public class Brettspiel extends Medien {
private int spieldauer; private int spieldauer;
public Brettspiel(String titel, String id, int erscheinungsjahr, int spieleranzahl, int spieldauer) { public Brettspiel(String titel, String id, int erscheinungsjahr, int spieleranzahl, int spieldauer) {
super(id, titel, erscheinungsjahr); super(titel, id, erscheinungsjahr);
this.spieleranzahl = spieleranzahl; this.spieleranzahl = spieleranzahl;
this.spieldauer = spieldauer; this.spieldauer = spieldauer;
} }

View File

@ -1,10 +1,12 @@
package Bibliothek; package Bibliothek;
import java.time.LocalDate;
import java.util.function.Consumer; import java.util.function.Consumer;
public class Kunde extends User { public class Kunde extends User {
private boolean istStudent; // True, wenn Kunde ein Student ist private boolean istStudent; // True, wenn Kunde ein Student ist
private double gebuehren; // Offene Gebühren private double gebuehren;
; // Offene Gebühren
public Kunde(String id, String name, boolean istStudent) { public Kunde(String id, String name, boolean istStudent) {
super(id, name); super(id, name);
@ -20,26 +22,22 @@ public class Kunde extends User {
return gebuehren; return gebuehren;
} }
public void addGebuehren(double betrag) {
if (betrag > 0) {
this.gebuehren += betrag;
}
}
public void gebuehrenErhoehen(double betrag) { public void gebuehrenErhoehen(double betrag) {
this.gebuehren += betrag; this.gebuehren += betrag;
} }
public void berechneGebuehren() { public double berechneGesamtgebuehren(LocalDate aktuellesDatum) {
// Gebühren berechnen basierend auf verspäteter Rückgabe return ausgelieheneMedien.stream()
ausgelieheneMedien.forEach(medien -> { .mapToDouble(medien -> medien.berechneGebuehren(aktuellesDatum))
if (medien.getRueckgabedat().isBefore(java.time.LocalDate.now())) { .sum();
int ueberfaelligeTage = java.time.Period.between( }
medien.getRueckgabedat(),
java.time.LocalDate.now()
).getDays();
double tagessatz = istStudent ? 0.5 : 1.0; // Studenten zahlen 50% weniger
gebuehren += ueberfaelligeTage <= 7
? ueberfaelligeTage * tagessatz
: (7 * tagessatz) + ((ueberfaelligeTage - 7) * 2);
}
});
}
public boolean medienVerlaengern(Medien medien, int aktuelleVerlaengerungen) { public boolean medienVerlaengern(Medien medien, int aktuelleVerlaengerungen) {
Consumer<Medien> verlaengerung = m -> { Consumer<Medien> verlaengerung = m -> {
@ -52,9 +50,4 @@ public class Kunde extends User {
verlaengerung.accept(medien); verlaengerung.accept(medien);
return false; return false;
} }
@Override
public void rolleAnzeigen() {
System.out.println("Kunde: " + name + (istStudent ? " (Student)" : " (Erwachsener)"));
}
} }

View File

@ -3,25 +3,39 @@ package Bibliothek;
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
Bibliotheksverwaltung verwaltung = new Bibliotheksverwaltung(); Bibliotheksverwaltung verwaltung = new Bibliotheksverwaltung();
/**
Kunde kunde1 = new Kunde("S001", "Max Mustermann", true); * Hart codierte Kunden und Admin
Kunde kunde2 = new Kunde("K001", "Lisa Müller", false); */
Kunde kunde1 = new Kunde("S1", "Max Mustermann", true);
Kunde kunde2 = new Kunde("K1", "Lisa Müller", false);
verwaltung.getKundenListe().put(kunde1.getId(), kunde1); verwaltung.getKundenListe().put(kunde1.getId(), kunde1);
verwaltung.getKundenListe().put(kunde2.getId(), kunde2); verwaltung.getKundenListe().put(kunde2.getId(), kunde2);
Admin admin = new Admin("A001", "Anna Schmidt"); Admin admin = new Admin("A1", "Anna Schmidt");
verwaltung.getAdminListe().put(admin.getId(), admin); verwaltung.getAdminListe().put(admin.getId(), admin);
Medien buch1 = new Buch("Der Herr der Ringe", "B001", 1954, "J.R.R. Tolkien", 1200); /**
Medien buch2 = new Buch("Game of Thrones 1: Der Winter naht", "B002", 1996, "George R.R. Martin", 576); * Hart codierte Medien
Medien buch3 = new Buch("Harry Potter and the Prisoner of Azkaban", "B003", 2014, "J.K. Rowling", 480); */
Medien dvd1 = new DVD("Inception", "D001", 2010, "Christopher Nolan", 148); Medien buch1 = new Buch("Der Herr der Ringe", "B1", 1954, "J.R.R. Tolkien", 1200);
Medien dvd2 = new DVD("Batman 'The Dark Knight'", "D002", 2008, "Christopher Nolan", 152); Medien buch2 = new Buch("Game of Thrones 1: Der Winter naht", "B2", 1996, "George R.R. Martin", 576);
Medien dvd3 = new DVD("Star Wars: Episode 3 'Die Rache der Sith'", "D003", 2005, "George Lucas", 140); Medien buch3 = new Buch("Harry Potter and the Prisoner of Azkaban", "B3", 2014, "J.K. Rowling", 480);
Medien cd1 = new CD("Black Ice", "CD001", 2001, "ACDC", 15); Medien dvd1 = new DVD("Inception", "D1", 2010, "Christopher Nolan", 148);
Medien cd2 = new CD("From Zero", "CD002", 2024, "Linkin Park", 11); Medien dvd2 = new DVD("Batman 'The Dark Knight'", "D2", 2008, "Christopher Nolan", 152);
Medien cd3 = new CD("The War to end all Wars", "CD003", 2022, "Sabaton", 10); Medien dvd3 = new DVD("Star Wars: Episode 3 'Die Rache der Sith'", "D3", 2005, "George Lucas", 140);
Medien cd1 = new CD("Black Ice", "CD1", 2001, "ACDC", 15);
Medien cd2 = new CD("From Zero", "CD2", 2024, "Linkin Park", 11);
Medien cd3 = new CD("The War to end all Wars", "CD3", 2022, "Sabaton", 10);
Medien br1 = new Brettspiel("Wizard", "BR1", 1984, 4, 50);
Medien br2 = new Brettspiel("Mensch Ärgere dich nicht", "BR2", 1910, 6, 50);
Medien br3 = new Brettspiel("Monopoly Star Wars Edition", "BR3", 2016, 4, 60);
Medien vd1 = new Videospiel("Cyberpunk2077", "VD1", 2022, "PC/PS5/XBOX", "CD Projekt Red");
Medien vd2 = new Videospiel("Landwirtschafts-Simulator 25", "VD2", 2024, "PC/PS5/XBOX", "Giants");
Medien vd3 = new Videospiel("CFB25", "VD3", 2024, "PC/PS5/XBOX", "EA-Sports");
/**
* Hinzufügen Methode der hart codierten Medien
*/
verwaltung.medienHinzufuegen(buch1); verwaltung.medienHinzufuegen(buch1);
verwaltung.medienHinzufuegen(buch2); verwaltung.medienHinzufuegen(buch2);
verwaltung.medienHinzufuegen(buch3); verwaltung.medienHinzufuegen(buch3);
@ -31,6 +45,12 @@ public class Main {
verwaltung.medienHinzufuegen(cd1); verwaltung.medienHinzufuegen(cd1);
verwaltung.medienHinzufuegen(cd2); verwaltung.medienHinzufuegen(cd2);
verwaltung.medienHinzufuegen(cd3); verwaltung.medienHinzufuegen(cd3);
verwaltung.medienHinzufuegen(br1);
verwaltung.medienHinzufuegen(br2);
verwaltung.medienHinzufuegen(br3);
verwaltung.medienHinzufuegen(vd1);
verwaltung.medienHinzufuegen(vd2);
verwaltung.medienHinzufuegen(vd3);
// Starte UI // Starte UI
UI tui = new UI(verwaltung); UI tui = new UI(verwaltung);

View File

@ -15,15 +15,19 @@ public abstract class Medien {
this.id = id; this.id = id;
this.erscheinungsjahr = erscheinungsjahr; this.erscheinungsjahr = erscheinungsjahr;
} }
public String getTitel() { public String getTitel() {
return titel; return titel;
} }
public void setTitel(String titel) { public void setTitel(String titel) {
this.titel = titel; this.titel = titel;
} }
public String getId() { public String getId() {
return id; return id;
} }
public void setId(String id) { public void setId(String id) {
this.id = id; this.id = id;
} }
@ -35,16 +39,21 @@ public abstract class Medien {
public boolean verfuegbar() { public boolean verfuegbar() {
return verfuegbar; return verfuegbar;
} }
public int getErscheinungsjahr() { public int getErscheinungsjahr() {
return erscheinungsjahr; return erscheinungsjahr;
} }
public void setErscheinungsjahr(int er) { public void setErscheinungsjahr(int er) {
this.erscheinungsjahr = er; this.erscheinungsjahr = er;
} }
public void setVerfuegbar(boolean verfuegbar) { public void setVerfuegbar(boolean verfuegbar) {
this.verfuegbar = verfuegbar; this.verfuegbar = verfuegbar;
} }
public abstract int getAusleihdauer(); public abstract int getAusleihdauer();
public abstract int getMaxVerlaengerungen(); public abstract int getMaxVerlaengerungen();
public void ausleihen() { public void ausleihen() {
@ -75,5 +84,19 @@ public abstract class Medien {
rueckgabedat = null; rueckgabedat = null;
} }
public boolean istUeberzogen(LocalDate aktuellesDatum) {
return rueckgabedat != null && rueckgabedat.isBefore(aktuellesDatum);
}
public double berechneGebuehren(LocalDate aktuellesDatum) {
if (rueckgabedat == null || !istUeberzogen(aktuellesDatum)) {
return 0.0; // Keine Gebühren, wenn nicht überzogen
}
long ueberzogeneTage = java.time.temporal.ChronoUnit.DAYS.between(rueckgabedat, aktuellesDatum);
return ueberzogeneTage * 0.50; // Beispiel: 0.50 Euro pro überzogenem Tag
}
public abstract String getDetails(); public abstract String getDetails();
} }

View File

@ -1,5 +1,6 @@
package Bibliothek; package Bibliothek;
import java.time.LocalDate;
import java.util.Scanner; import java.util.Scanner;
public class UI { public class UI {
@ -35,6 +36,8 @@ public class UI {
System.out.println("10. Gebühren anzeigen"); System.out.println("10. Gebühren anzeigen");
System.out.println("11. Gebühren verbuchen (Admin)"); System.out.println("11. Gebühren verbuchen (Admin)");
System.out.println("12. Medien hinzufügen (Admin)"); System.out.println("12. Medien hinzufügen (Admin)");
System.out.println("13. Meine ausgeliehenen Medien anzeigen");
System.out.println("14. Datum einstellen");
System.out.println("0. Beenden"); System.out.println("0. Beenden");
System.out.print("Auswahl: "); System.out.print("Auswahl: ");
} }
@ -53,11 +56,16 @@ public class UI {
case "10" -> gebuehrenAnzeigen(); case "10" -> gebuehrenAnzeigen();
case "11" -> gebuehrenVerbuchen(); case "11" -> gebuehrenVerbuchen();
case "12" -> medienHinzufuegen(); case "12" -> medienHinzufuegen();
case "13" -> ausgeliehenenMedienAnzeigen();
case "14" -> datumEinstellen();
case "0" -> System.out.println("Beende das Programm..."); case "0" -> System.out.println("Beende das Programm...");
default -> System.out.println("Ungültige Auswahl. Bitte erneut versuchen."); default -> System.out.println("Ungültige Auswahl. Bitte erneut versuchen.");
} }
} }
/**
* Wartet auf die Eingabe der Kunden-Id, wenn diese existiert wird der User eingeloggt
*/
private void loginKunde() { private void loginKunde() {
System.out.print("Kunden-ID eingeben: "); System.out.print("Kunden-ID eingeben: ");
String kundenId = scanner.nextLine(); String kundenId = scanner.nextLine();
@ -92,7 +100,6 @@ public class UI {
Kunde neuerKunde = verwaltung.registriereKunde(name, istStudent); Kunde neuerKunde = verwaltung.registriereKunde(name, istStudent);
} }
private void medienDurchsuchen() { private void medienDurchsuchen() {
System.out.print("Suchbegriff eingeben: "); System.out.print("Suchbegriff eingeben: ");
String suchbegriff = scanner.nextLine(); String suchbegriff = scanner.nextLine();
@ -102,7 +109,7 @@ public class UI {
System.out.println("Keine Medien gefunden."); System.out.println("Keine Medien gefunden.");
} else { } else {
System.out.println("Suchergebnisse:"); System.out.println("Suchergebnisse:");
ergebnisse.forEach(medien -> System.out.println("- " + medien.getDetails())); ergebnisse.forEach(System.out::println);
} }
} }
@ -152,13 +159,15 @@ public class UI {
private void gebuehrenAnzeigen() { private void gebuehrenAnzeigen() {
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) { if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
System.out.println("Bitte loggen Sie sich als Kunde ein, um Gebühren anzuzeigen."); System.out.println("Nur eingeloggte Kunden können ihre Gebühren anzeigen.");
return; return;
} }
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer(); Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
System.out.println("Gebühren von " + kunde.getName() + ": " + kunde.getGebuehren() + "€"); double gesamtgebuehren = kunde.berechneGesamtgebuehren(verwaltung.getAktuellesDatum());
System.out.println("Gesamtgebühren: " + gesamtgebuehren + " €");
} }
private void gebuehrenVerbuchen() { private void gebuehrenVerbuchen() {
if (!(verwaltung.getEingeloggterBenutzer() instanceof Admin)) { if (!(verwaltung.getEingeloggterBenutzer() instanceof Admin)) {
System.out.println("Nur Admins können Gebühren verbuchen. Bitte als Admin einloggen."); System.out.println("Nur Admins können Gebühren verbuchen. Bitte als Admin einloggen.");
@ -171,7 +180,6 @@ public class UI {
System.out.println("Kunde nicht gefunden."); System.out.println("Kunde nicht gefunden.");
return; return;
} }
System.out.print("Betrag eingeben: "); System.out.print("Betrag eingeben: ");
try { try {
double betrag = Double.parseDouble(scanner.nextLine()); double betrag = Double.parseDouble(scanner.nextLine());
@ -245,4 +253,21 @@ public class UI {
System.out.println("Ungültige Eingabe. Bitte eine Zahl eingeben."); System.out.println("Ungültige Eingabe. Bitte eine Zahl eingeben.");
} }
} }
private void ausgeliehenenMedienAnzeigen() {
verwaltung.zeigeAusgelieheneMedien();
}
private void datumEinstellen() {
System.out.print("Neues Datum eingeben (YYYY-MM-DD): ");
String eingabe = scanner.nextLine();
try {
LocalDate neuesDatum = LocalDate.parse(eingabe);
verwaltung.setAktuellesDatum(neuesDatum);
} catch (Exception e) {
System.out.println("Ungültiges Datum. Bitte im Format YYYY-MM-DD eingeben.");
}
}
} }

View File

@ -45,6 +45,4 @@ public abstract class User {
System.out.println("'" + medien.getTitel() + "' wurde nicht von " + name + " ausgeliehen."); System.out.println("'" + medien.getTitel() + "' wurde nicht von " + name + " ausgeliehen.");
} }
} }
public abstract void rolleAnzeigen();
} }

View File

@ -5,7 +5,7 @@ public class Videospiel extends Medien {
private String entwickler; private String entwickler;
public Videospiel(String titel, String id, int erscheinungsjahr, String plattform, String entwickler) { public Videospiel(String titel, String id, int erscheinungsjahr, String plattform, String entwickler) {
super(id, titel, erscheinungsjahr); super(titel, id, erscheinungsjahr);
this.plattform = plattform; this.plattform = plattform;
this.entwickler = entwickler; this.entwickler = entwickler;
} }