u26
This commit is contained in:
parent
815d0cfa25
commit
31dd5c47c7
|
@ -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>
|
|
@ -0,0 +1 @@
|
|||
/bin/
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>u26</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>
|
|
@ -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
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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<Medium> medien= new HashSet<Medium>();
|
||||
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<Buch> buecher= new HashSet<Buch>();
|
||||
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<Zeitschrift> zeitschriften= new HashSet<Zeitschrift>();
|
||||
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;
|
||||
}
|
||||
}
|
|
@ -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<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();
|
||||
|
||||
/**
|
||||
* Vergleicht das Objekt mit einem anderen Medium nach deren Erscheinungsjahren
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(Medium m) {
|
||||
return this.getErscheinungsjahr() - m.getErscheinungsjahr();
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue