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() + ); + } +}