diff --git a/u21/.classpath b/u21/.classpath
new file mode 100644
index 0000000..57bca72
--- /dev/null
+++ b/u21/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/u21/.gitignore b/u21/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/u21/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/u21/.project b/u21/.project
new file mode 100644
index 0000000..f6cf020
--- /dev/null
+++ b/u21/.project
@@ -0,0 +1,17 @@
+
+
+ u21
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/u21/.settings/org.eclipse.jdt.core.prefs b/u21/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/u21/.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/u21/src/de/hsh/vehicles/AnsaldoFiremaT68.java b/u21/src/de/hsh/vehicles/AnsaldoFiremaT68.java
new file mode 100644
index 0000000..bf02908
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/AnsaldoFiremaT68.java
@@ -0,0 +1,15 @@
+package de.hsh.vehicles;
+
+public class AnsaldoFiremaT68 implements RailVehicle {
+
+ @Override
+ public void operate() {
+ System.out.println("Ansaldo Firema T-68 is operating as a light rail passenger vehicle");
+ }
+
+ @Override
+ public int trackGauge() {
+ return 1435;
+ }
+
+}
diff --git a/u21/src/de/hsh/vehicles/BMWS1000RR.java b/u21/src/de/hsh/vehicles/BMWS1000RR.java
new file mode 100644
index 0000000..bef9df4
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/BMWS1000RR.java
@@ -0,0 +1,15 @@
+package de.hsh.vehicles;
+
+public class BMWS1000RR implements RoadVehicle {
+
+ @Override
+ public void operate() {
+ System.out.println("BMW S1000RR is operating as a sport bike");
+ }
+
+ @Override
+ public int numberOfWheels() {
+ return 2;
+ }
+
+}
diff --git a/u21/src/de/hsh/vehicles/CommanderSWX315.java b/u21/src/de/hsh/vehicles/CommanderSWX315.java
new file mode 100644
index 0000000..8f9985a
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/CommanderSWX315.java
@@ -0,0 +1,20 @@
+package de.hsh.vehicles;
+
+public class CommanderSWX315 implements RoadRailVehicle {
+
+ @Override
+ public int trackGauge() {
+ return 1435;
+ }
+
+ @Override
+ public void operate() {
+ System.out.println("Commander SWX 315 is operating as a railcar mover");
+ }
+
+ @Override
+ public int numberOfWheels() {
+ return 4;
+ }
+
+}
diff --git a/u21/src/de/hsh/vehicles/Main.java b/u21/src/de/hsh/vehicles/Main.java
new file mode 100644
index 0000000..ab34e7e
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/Main.java
@@ -0,0 +1,14 @@
+package de.hsh.vehicles;
+public class Main {
+ public static void main(String[] args) {
+ for (Vehicle v : new Vehicle[]{ new BMWS1000RR(), new AnsaldoFiremaT68(), new CommanderSWX315() }) {
+ v.operate();
+ }
+ for (RoadVehicle v : new RoadVehicle[]{ new BMWS1000RR(), new CommanderSWX315() }) {
+ System.out.println(v.numberOfWheels());
+ }
+ for (RailVehicle v : new RailVehicle[]{ new AnsaldoFiremaT68(), new CommanderSWX315() }) {
+ System.out.println(v.trackGauge());
+ }
+ }
+}
\ No newline at end of file
diff --git a/u21/src/de/hsh/vehicles/RailVehicle.java b/u21/src/de/hsh/vehicles/RailVehicle.java
new file mode 100644
index 0000000..aacca71
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/RailVehicle.java
@@ -0,0 +1,5 @@
+package de.hsh.vehicles;
+
+public interface RailVehicle extends Vehicle {
+ public int trackGauge();
+}
diff --git a/u21/src/de/hsh/vehicles/RoadRailVehicle.java b/u21/src/de/hsh/vehicles/RoadRailVehicle.java
new file mode 100644
index 0000000..bdc9f33
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/RoadRailVehicle.java
@@ -0,0 +1,5 @@
+package de.hsh.vehicles;
+
+public interface RoadRailVehicle extends RailVehicle, RoadVehicle {
+
+}
diff --git a/u21/src/de/hsh/vehicles/RoadVehicle.java b/u21/src/de/hsh/vehicles/RoadVehicle.java
new file mode 100644
index 0000000..574bb23
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/RoadVehicle.java
@@ -0,0 +1,5 @@
+package de.hsh.vehicles;
+
+public interface RoadVehicle extends Vehicle {
+ public int numberOfWheels();
+}
diff --git a/u21/src/de/hsh/vehicles/Vehicle.java b/u21/src/de/hsh/vehicles/Vehicle.java
new file mode 100644
index 0000000..40fd497
--- /dev/null
+++ b/u21/src/de/hsh/vehicles/Vehicle.java
@@ -0,0 +1,5 @@
+package de.hsh.vehicles;
+
+public interface Vehicle {
+ public void operate();
+}
diff --git a/u21/src/vehicles.asta b/u21/src/vehicles.asta
new file mode 100644
index 0000000..d536f61
Binary files /dev/null and b/u21/src/vehicles.asta differ
diff --git a/u21/src/vehicles.png b/u21/src/vehicles.png
new file mode 100644
index 0000000..2feb735
Binary files /dev/null and b/u21/src/vehicles.png differ
diff --git a/u21/vehicles.asta.lock b/u21/vehicles.asta.lock
new file mode 100644
index 0000000..e69de29
diff --git a/u23/.classpath b/u23/.classpath
new file mode 100644
index 0000000..57bca72
--- /dev/null
+++ b/u23/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/u23/.gitignore b/u23/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/u23/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/u23/.project b/u23/.project
new file mode 100644
index 0000000..fbb144f
--- /dev/null
+++ b/u23/.project
@@ -0,0 +1,17 @@
+
+
+ u23
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/u23/.settings/org.eclipse.jdt.core.prefs b/u23/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/u23/.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/u23/src/Buch.java b/u23/src/Buch.java
new file mode 100644
index 0000000..df480c4
--- /dev/null
+++ b/u23/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/u23/src/CD.java b/u23/src/CD.java
new file mode 100644
index 0000000..c7de607
--- /dev/null
+++ b/u23/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/u23/src/MedienMain.java b/u23/src/MedienMain.java
new file mode 100644
index 0000000..7672b6d
--- /dev/null
+++ b/u23/src/MedienMain.java
@@ -0,0 +1,19 @@
+/**
+ * Testet Subklassen von Medium
und deren Leihfrist.
+ */
+public class MedienMain {
+ /** Hauptroutine */
+ 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)
+ };
+
+ for (Medium m : medien) {
+ System.out.println(m);
+ System.out.println(" Leihfrist: " + m.getLeihFrist());
+ }
+ }
+}
\ No newline at end of file
diff --git a/u23/src/Medium.java b/u23/src/Medium.java
new file mode 100644
index 0000000..b3f888b
--- /dev/null
+++ b/u23/src/Medium.java
@@ -0,0 +1,66 @@
+
+/**
+ * Abstrakte Medium Klasse für Bücher, CDs und Zeitschriften
+ * @author p8q-yhw-u1
+ *
+ */
+public abstract class Medium {
+ 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();
+}
diff --git a/u23/src/Zeitschrift.java b/u23/src/Zeitschrift.java
new file mode 100644
index 0000000..ddf354a
--- /dev/null
+++ b/u23/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()
+ );
+ }
+}