This commit is contained in:
Luca Conte 2023-05-24 18:19:01 +02:00
parent cf145ceeed
commit 89f701bf6d
24 changed files with 488 additions and 0 deletions

10
u21/.classpath Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

1
u21/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/bin/

17
u21/.project Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>u21</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -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

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

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

View File

@ -0,0 +1,5 @@
package de.hsh.vehicles;
public interface RailVehicle extends Vehicle {
public int trackGauge();
}

View File

@ -0,0 +1,5 @@
package de.hsh.vehicles;
public interface RoadRailVehicle extends RailVehicle, RoadVehicle {
}

View File

@ -0,0 +1,5 @@
package de.hsh.vehicles;
public interface RoadVehicle extends Vehicle {
public int numberOfWheels();
}

View File

@ -0,0 +1,5 @@
package de.hsh.vehicles;
public interface Vehicle {
public void operate();
}

BIN
u21/src/vehicles.asta Normal file

Binary file not shown.

BIN
u21/src/vehicles.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

0
u21/vehicles.asta.lock Normal file
View File

10
u23/.classpath Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

1
u23/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/bin/

17
u23/.project Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>u23</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -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

88
u23/src/Buch.java Normal file
View File

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

85
u23/src/CD.java Normal file
View File

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

19
u23/src/MedienMain.java Normal file
View File

@ -0,0 +1,19 @@
/**
* Testet Subklassen von <code>Medium</code> 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());
}
}
}

66
u23/src/Medium.java Normal file
View File

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

62
u23/src/Zeitschrift.java Normal file
View File

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