diff --git a/u26/.classpath b/u26/.classpath
new file mode 100644
index 0000000..57bca72
--- /dev/null
+++ b/u26/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/u26/.gitignore b/u26/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/u26/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/u26/.project b/u26/.project
new file mode 100644
index 0000000..544fd24
--- /dev/null
+++ b/u26/.project
@@ -0,0 +1,17 @@
+
+
+ u26
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/u26/.settings/org.eclipse.jdt.core.prefs b/u26/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/u26/.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/u26/src/Buch.java b/u26/src/Buch.java
new file mode 100644
index 0000000..df480c4
--- /dev/null
+++ b/u26/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/u26/src/CD.java b/u26/src/CD.java
new file mode 100644
index 0000000..c7de607
--- /dev/null
+++ b/u26/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/u26/src/MedienMain.java b/u26/src/MedienMain.java
new file mode 100644
index 0000000..f2ccffe
--- /dev/null
+++ b/u26/src/MedienMain.java
@@ -0,0 +1,39 @@
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+public class MedienMain {
+ public static void main(String[] args) {
+ Set medien= new HashSet();
+ Collections.addAll(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) );
+ System.out.println(getMaxErscheinungsjahr(medien));
+ // Sortenreines Set von Büchern
+ Set buecher= new HashSet();
+ Collections.addAll(buecher,
+ new Buch("Building Java Programs - A Back to Basics Approach",
+ 2007, "Addison Wesley", "Stuart Reges, Marty Stepp"),
+ new Buch("Java ist auch eine Insel",
+ 2009, "Christian Ullenboom", "Galileo Computing"));
+ System.out.println(getMaxErscheinungsjahr(buecher));
+
+ // Sortenreines Set von Zeitschriften
+ Set zeitschriften= new HashSet();
+ Collections.addAll(zeitschriften,
+ new Zeitschrift("Der Spiegel", 2009, 12),
+ new Zeitschrift("Der Spiegel", 2010, 1),
+ new Zeitschrift("Der Spiegel", 2010, 2));
+ System.out.println(getMaxErscheinungsjahr(zeitschriften));
+ }
+
+ public static int getMaxErscheinungsjahr(Set extends Medium> medien) {
+ int max = 0;
+ for (Medium m : medien) {
+ max = Math.max(m.getErscheinungsjahr(), max);
+ }
+ return max;
+ }
+}
\ No newline at end of file
diff --git a/u26/src/Medium.java b/u26/src/Medium.java
new file mode 100644
index 0000000..4051cd1
--- /dev/null
+++ b/u26/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/u26/src/Zeitschrift.java b/u26/src/Zeitschrift.java
new file mode 100644
index 0000000..ddf354a
--- /dev/null
+++ b/u26/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()
+ );
+ }
+}