From 815d0cfa25881598a9081d26ece8bed523637c51 Mon Sep 17 00:00:00 2001 From: Luca Conte Date: Wed, 31 May 2023 16:16:03 +0200 Subject: [PATCH] u25 --- u25/.classpath | 10 +++ u25/.project | 17 +++++ u25/.settings/org.eclipse.jdt.core.prefs | 14 ++++ u25/src/Buch.java | 88 ++++++++++++++++++++++++ u25/src/CD.java | 85 +++++++++++++++++++++++ u25/src/MedienMain.java | 16 +++++ u25/src/Medium.java | 75 ++++++++++++++++++++ u25/src/Zeitschrift.java | 62 +++++++++++++++++ 8 files changed, 367 insertions(+) create mode 100644 u25/.classpath create mode 100644 u25/.project create mode 100644 u25/.settings/org.eclipse.jdt.core.prefs create mode 100644 u25/src/Buch.java create mode 100644 u25/src/CD.java create mode 100644 u25/src/MedienMain.java create mode 100644 u25/src/Medium.java create mode 100644 u25/src/Zeitschrift.java diff --git a/u25/.classpath b/u25/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/u25/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/u25/.project b/u25/.project new file mode 100644 index 0000000..55a448e --- /dev/null +++ b/u25/.project @@ -0,0 +1,17 @@ + + + u25 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/u25/.settings/org.eclipse.jdt.core.prefs b/u25/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/u25/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/u25/src/Buch.java b/u25/src/Buch.java new file mode 100644 index 0000000..df480c4 --- /dev/null +++ b/u25/src/Buch.java @@ -0,0 +1,88 @@ + +/** + * Klasse für Bücher mit Verlag und Autor + * @author p8q-yhw-u1 + * + */ +public class Buch extends Medium { + + private String verlag; + private String autor; + + /** + * Erzeugt Buch Objekt + * @param titel darf nicht leer sein + * @param erscheinungsjahr darf nicht < 0 sein + * @param verlag darf nicht leer sein + * @param autor darf nicht leer sein + */ + public Buch(String titel, int erscheinungsjahr, String verlag, String autor) { + super(titel, erscheinungsjahr); + this.setVerlag(verlag); + this.setAutor(autor); + } + + /** + * Setzt den Verlag des Buchs + * @param verlag darf nicht leer sein + */ + public void setVerlag(String verlag) { + if (verlag == null || verlag.length() == 0) { + throw new IllegalArgumentException("Verlag darf nicht leer sein"); + } + + this.verlag = verlag; + } + + /** + * Gibt den Verlag des Buches zurück + * @return + */ + public String getVerlag() { + return this.verlag; + } + + /** + * Setzt den Autor des Buches + * @param autor darf nicht leer sein + */ + public void setAutor(String autor) { + if (autor == null || autor.length() == 0) { + throw new IllegalArgumentException("Autor darf nicht leer sein"); + } + + this.autor = autor; + } + + + /** + * Gibt den autor des Buches zurück + * @return + */ + public String getAutor() { + return this.autor; + } + + /** + * Gibt die Leihfrist für Bücher zurück + * @return + */ + @Override + public int getLeihFrist() { + return 28; + } + + /** + * Gibt eine String repräsentation des Buches zurück + */ + @Override + public String toString() { + return String.format( + "%s: %s (%d) %s", + this.getAutor(), + this.getTitel(), + this.getErscheinungsjahr(), + this.getVerlag() + ); + } +} diff --git a/u25/src/CD.java b/u25/src/CD.java new file mode 100644 index 0000000..c7de607 --- /dev/null +++ b/u25/src/CD.java @@ -0,0 +1,85 @@ + +/** + * Klasse für CDs mit Künstler und Spielzeit + * @author p8q-yhw-u1 + * + */ +public class CD extends Medium { + private String kuenstler; + private int spielzeit; + + /** + * Erstellt ein CD Objekt + * @param titel darf nicht leer sein + * @param erscheinungsjahr darf nicht < 0 sein + * @param kuenstler darf nicht leer sein + * @param spielzeit darf nicht < 1 sein + */ + public CD(String titel, int erscheinungsjahr, String kuenstler, int spielzeit) { + super(titel, erscheinungsjahr); + this.setKuenstler(kuenstler); + this.setGesamtspielzeit(spielzeit); + } + + /** + * Setzt den Künstler der CD + * @param kuenstler darf nicht leer sein + */ + public void setKuenstler(String kuenstler) { + if (kuenstler == null || kuenstler.length() == 0) { + throw new IllegalArgumentException("Künstler darf nicht leer sein"); + } + this.kuenstler = kuenstler; + } + + /** + * gibt den Künstler der CD zurück + * @return + */ + public String getKuenstler() { + return this.kuenstler; + } + + /** + * Setzt die Gesamtspielzeit der CD + * @param spielzeit darf nicht < 1 sein + */ + public void setGesamtspielzeit(int spielzeit) { + if (spielzeit < 1) { + throw new IllegalArgumentException("Spielzeit darf nicht kleiner als 1 sein"); + } + + this.spielzeit = spielzeit; + } + + /** + * Gibt die Gesamtspielzeit der CD zurück + * @return + */ + public int getGesamtspielzeit() { + return this.spielzeit; + } + + /** + * Gibt die Leihfrist für CDs zurück + * @return + */ + @Override + public int getLeihFrist() { + return 14; + } + + /** + * Gibt eine String repräsentation der CD zurück + */ + @Override + public String toString() { + return String.format( + "%s: %s (%d) %d Minuten", + this.getKuenstler(), + this.getTitel(), + this.getErscheinungsjahr(), + this.getGesamtspielzeit() + ); + } +} diff --git a/u25/src/MedienMain.java b/u25/src/MedienMain.java new file mode 100644 index 0000000..b7c0be0 --- /dev/null +++ b/u25/src/MedienMain.java @@ -0,0 +1,16 @@ +import java.util.Arrays; + +public class MedienMain { + public static void main(String[] args) { + Medium[] medien= { + new Buch("Building Java Programs - A Back to Basics Approach", + 2007, "Addison Wesley", "Stuart Reges, Marty Stepp"), + new CD("Are you Experienced?", 1967, "Jimi Hendrix", 40), + new Zeitschrift("Der Spiegel", 2010, 3) + }; + Arrays.sort(medien); + for (Medium m : medien) { + System.out.println(m); + } + } +} \ No newline at end of file diff --git a/u25/src/Medium.java b/u25/src/Medium.java new file mode 100644 index 0000000..4051cd1 --- /dev/null +++ b/u25/src/Medium.java @@ -0,0 +1,75 @@ + +/** + * Abstrakte Medium Klasse für Bücher, CDs und Zeitschriften + * @author p8q-yhw-u1 + * Note: this class has a natural ordering that is inconsistent with equals + */ +public abstract class Medium implements Comparable { + private String titel; + private int erscheinungsjahr; + + /** + * Constructor eines Mediums + * @param titel darf nicht leer sein + * @param erscheinungsjahr darf nicht < 0 sein + */ + public Medium(String titel, int erscheinungsjahr) { + this.setTitel(titel); + this.setErscheinungsjahr(erscheinungsjahr); + } + + /** + * Setzt das Erscheinungsjahr eines Mediums + * @param erscheinungsjahr darf nicht < 0 sein + */ + public void setErscheinungsjahr(int erscheinungsjahr) { + if (erscheinungsjahr < 0) { + throw new IllegalArgumentException("Erscheinungsjahr muss positiv sein"); + } + + this.erscheinungsjahr = erscheinungsjahr; + } + + /** + * Gibt das Erscheinungsjahr des Mediums zurücck + * @return + */ + public int getErscheinungsjahr() { + return this.erscheinungsjahr; + } + + /** + * Setzt den Titel des Mediums + * @param titel darf nicht leer sein + */ + public void setTitel(String titel) { + if (titel == null || titel.length() == 0) { + throw new IllegalArgumentException("Titel darf nicht leer sein"); + } + + this.titel = titel; + } + + /** + * Gibt den Titel des Mediums zurück + * @return + */ + public String getTitel() { + return this.titel; + } + + /** + * Gibt die Leihfrist des Mediums zurück + * @return + */ + public abstract int getLeihFrist(); + + /** + * Vergleicht das Objekt mit einem anderen Medium nach deren Erscheinungsjahren + * + */ + @Override + public int compareTo(Medium m) { + return this.getErscheinungsjahr() - m.getErscheinungsjahr(); + } +} diff --git a/u25/src/Zeitschrift.java b/u25/src/Zeitschrift.java new file mode 100644 index 0000000..ddf354a --- /dev/null +++ b/u25/src/Zeitschrift.java @@ -0,0 +1,62 @@ + +/** + * Klasse für Zeitschriften mit Nummer + * @author p8q-yhw-u1 + * + */ +public class Zeitschrift extends Medium { + private int nummer; + + /** + * Erstellt ein Zeitschrift Objekt + * @param titel darf nicht leer sein + * @param erscheinungsjahr darf nicht < 0 sein + * @param nummer darf nicht < 1 sein + */ + public Zeitschrift(String titel, int erscheinungsjahr, int nummer) { + super(titel, erscheinungsjahr); + this.setNummer(nummer); + } + + /** + * Setzt die Nummer der Zeitschrift + * @param nummer darf nicht < 1 sein + */ + public void setNummer(int nummer) { + if (nummer < 1) { + throw new IllegalArgumentException("Nummer darf nicht kleiner als 1 sein"); + } + + this.nummer = nummer; + } + + /** + * Gibt die Nummer der Zeitschrift zurück + * @return + */ + public int getNummer() { + return this.nummer; + } + + /** + * Gibt die Leihfrist für Zeitschriften zurück + * @return + */ + @Override + public int getLeihFrist() { + return 7; + } + + /** + * Gibt eine String repräsentation des Buches zurück + */ + @Override + public String toString() { + return String.format( + "%s (%d/%d)", + this.getTitel(), + this.getNummer(), + this.getErscheinungsjahr() + ); + } +}