8.7 Lösungen

8.7.1 Vererbung und Überschreiben

Klasse TopClass

package s1.block8;
public class TopClass {
   protected static int zaehler;
   public TopClass() {zaehler++;}
   protected static int getZaehler() {return zaehler;}
}

Klasse LowClass

public class LowClass extends TopClass {
   protected static int zaehler;

   public LowClass() {zaehler++;}

   protected static int getZaehler() {return zaehler;}

   protected void test (){
      System.out.println( getZaehler() + " Instanzen der Klasse LowClass erzeugt");
      System.out.println( TopClass.getZaehler() + " Instanzen der Klasse TopClass erzeugt");
   }

   public static void main(String[] args) {
      int size = 3;
      TopClass[] feldT = new TopClass[size];
      LowClass[] feldL = new LowClass[size];
      for ( int i=0; i<size; i++) feldT[i]= new TopClass();
      for ( int i=0; i<size; i++) {
         feldL[i]= new LowClass();
         feldL[i].test();
      }
      System.out.println(TopClass.getZaehler() + " Instanzen TopClass generiert, "+
         LowClass.getZaehler() + " Instanzen LowClass generiert");
   } // Ende Methode main()
} // Ende Klasse LowClass

 

Ausgaben (mit Attribut zaehler in Klasse LowClass)

 

1 Instanzen der Klasse LowClass erzeugt
4 Instanzen der Klasse TopClass erzeugt
2 Instanzen der Klasse LowClass erzeugt
5 Instanzen der Klasse TopClass erzeugt
3 Instanzen der Klasse LowClass erzeugt
6 Instanzen der Klasse TopClass erzeugt
6 Instanzen TopClass generiert, 3 Instanzen LowClass generiert

Ausgaben (ohne Attribut zaehler in Klasse LowClass)

5 Instanzen der Klasse LowClass erzeugt
5 Instanzen der Klasse TopClass erzeugt
7 Instanzen der Klasse LowClass erzeugt
7 Instanzen der Klasse TopClass erzeugt
9 Instanzen der Klasse LowClass erzeugt
9 Instanzen der Klasse TopClass erzeugt
9 Instanzen TopClass generiert, 9 Instanzen LowClass generiert

8.7.2 Vererbung und Assoziation

Klasse Point

package s1.block8;
public class Point {
    private double x;
    private double y;
    public Point(double xx, double yy) {
        x = xx;
        y = yy;
    }
    public void setXY(double xx, double yy) {
        x = xx;
        y = yy;
    }
    public double getX() { return x;}
    public double getY() { return y;}
    public void print() {System.out.println(toString());}
    public String toString() {return ("x: " + x + " y: " + y);}
}

Klasse CircleIsPoint

package s1.block8;
public class CircleIsPoint extends Point{
    private double radius;
    public CircleIsPoint(double xx, double yy, double r) {
        super(xx,yy);
        radius=r;
    }
    public double getRadius() {return radius;}
    public void setRadius(double r) {radius=r;}
    public String toString() {return (super.toString() + " , r: " + radius);}
}

Klasse CircleHasPoint

package s1.block8;
public class CircleHasPoint {
    private double radius;
    private Point p;
    public CircleHasPoint(double xx, double yy, double r) {
        p = new Point(xx,yy);
        radius=r;
    }
    public double getRadius() {return radius;}
    public void setRadius(double r) {radius=r;}
    public void setXY(double xx, double yy) { p.setXY(xx,yy);}
    public double getX() { return p.getX();}
    public double getY() { return p.getY();}
    public void print() {System.out.println(toString());}
    public String toString() {return ("x: " + p.getX() + " y: " +
            p.getY() + " r: "+ radius);}
}

Klasse Main

package s1.block8;
public class Main {

    public static void main(String[] args) {
        Point p1 = new Point (2.2, 3.3);
        Point p2 = new Point (2.22, 3.33);
        CircleIsPoint cip1 = new CircleIsPoint(4.4,5.5,6.6);

        p1.print();
        cip1.print();

        CircleHasPoint chp1 = new CircleHasPoint(44.4,55.5,66.6);
        chp1.print();
    }
}

Ausgabe:

x: 2.2 y: 3.3
x: 4.4 y: 5.5 radius: 6.6
x: 44.4 y: 55.5 radius: 66.6

8.7.3 Beispiel der Vorlesung

Schritt 1: Klonen der Klasse Ware zu Buch und Anpassen

Ware, Lager, Buch, ohne Vererbung

Klasse Buch (nicht von Ware abgeleitet!)


 

package s1.block8;
/**
* Dies ist die Dokumentation der Klasse Ware. Ware dient zum Verwalten von Gütern
* mit Preisen und Namen in einem Lager.
* @author Stefan Schneider
* @version 1.2
* @see Lager
*/
public class Buch {
/*
* 1. Erzeugen Sie eine Klasse Buch in dem Sie die Klasse
* Ware mit Ihrem Inhalt kopieren
* 1.1 Anpassen Name
* 1.2 Anpassen Konstruktoren
* 1.3 Anpassen equals Methode
* 1.4 Anlegen einer ISBN Nummer
* 1.5 Anlegen einer hardcodierten halben Mehrwertsteuer
* 1.6 Referenz auf eine private, optionale (ältere) Auflage
* Zugriffsmethoden anlegen
* 1.7 Anpassen der Druckenmethode
* 4. Ableiten der Klasse aus der Klasse aus der Klasse Ware
* 4.1 extends Schlüsselwort benutzen
* 4.2 Löschen von allem redundanten Code
* 6. Erzeugen er Klasse MusikCD durch Kopieren der Klasse Ware
* 6.1 Mehrwertsteuer auf vollen Mehrwertsteuer hart kodieren
* 7. Die Klasse Ware soll nicht mehr instanziiert werden. Sie soll
* abstrakt werden
*/
/**
* Der aktuelle Mehrwertsteuersatz 2010.
* Er liegt zur Zeit bei {@value}.
*
* @since 1.0
*/
public static final double mws = 0.19;
private double nettoPreis; //Deklaration
private boolean halbeMws;
private String name;
public Buch empfehlung;
private String isbn;
private Buch alteAuflage;
/**
* Referenz aus alte Auflage
* @return
*/
public Buch getAlteAuflage() { return alteAuflage; }
/**
* zuweisen einer alten Auflage
* @param alteAuflage
*/
public void setAlteAuflage(Buch alteAuflage) {
this.alteAuflage = alteAuflage;
}
/**
* Auslesen der ISBN-Nummer (eine Zeichenkette)
* @return
*/
public String getISBN() { return isbn; }
/**
* Konstruktor fuer die Klasse Ware
* @param n der Name der Ware
* @param np der Nettopreis
* @param myISBN die ISBN Nummer
*/
public Buch(String n, double np, String myISBN) {
name = n;
nettoPreis = np;
halbeMws = true; //Bei Büchern immer der Fall
isbn=myISBN;
// zusätzliche Initialiserungen....
}
/**
* tiefes Vergleichen. Berücksichtigt beim Namen nicht
* die Groß/kleinschreinung. Berücksichtigt rekursiv die
* Empfehlungen
* @param dieAndereWare
* @return wahr wenn beide Waren dem Vergleich entsprechen.
*/
public boolean equals(Buch dieAndereWare) {
boolean result;
result = getName().equalsIgnoreCase(dieAndereWare.getName())
&& (getNettoPreis() == dieAndereWare.getNettoPreis())
&& (getHalbeMws() == dieAndereWare.getHalbeMws())
&& (((getEmpfehlung() == null) && (dieAndereWare.getEmpfehlung() == null))
|| ((getEmpfehlung() != null)
&& (dieAndereWare.getEmpfehlung() != null)
&& (getEmpfehlung().equals(dieAndereWare.getEmpfehlung()))
)
&& (isbn.equals(dieAndereWare.isbn))
&& (((alteAuflage == null) && (dieAndereWare.alteAuflage == null))
|| ((alteAuflage != null)
&& (dieAndereWare.alteAuflage != null)
&& (alteAuflage.equals(dieAndereWare.alteAuflage))
)
)
);
return result;
}
/**
* Liefert den Namen einer Ware zurueck.
* @return Name der Ware
*/
public String getName() {
return name;
}
/**
* Setzen eines neuen Nettopreis
* @param npr der neue Nettopreis
*/
public void setNettoPreis(double npr) {
nettoPreis = npr;
}

/**
* liefere wahr zurück wenn Mwssatz reduziert ist
* @return
*/
public boolean getHalbeMws() {return halbeMws;}

public Buch getEmpfehlung() { return empfehlung; }

public void setEmpfehlung(Buch empfehlung) {
this.empfehlung = empfehlung;
}
/**
* Ausdrucken aller Werte auf der Konsole
*/
public void drucken() { drucken(0); }
/**
* Ausdrucken aller Werte auf der Konsole mit vorgebener Einrueckung
* für Empfehlungen
* @param einruecken eingerueckte Stellen für Empfehlungen
*/
private void drucken(int einruecken) {
String leerStellen = "";
for (int i = 0; i < einruecken; i++) {
leerStellen = leerStellen + " ";
}
System.out.print(leerStellen + "Name: " + getName());
System.out.print(" ;Netto: " + getNettoPreis());
System.out.print(" ;Brutto: " + getBruttoPreis());
if (halbeMws)
System.out.println(" (Halbe Mws)");
else
System.out.println(" (Volle Mws)");
if (empfehlung != null) {
System.out.println(leerStellen + "Empfehlung:");
empfehlung.drucken(einruecken + 2);
}
System.out.println(leerStellen + "ISBN:" +isbn);
if (alteAuflage != null) {
System.out.println(leerStellen + "Alte Auflage:");
alteAuflage.drucken(einruecken + 2);
}
}
/**
* Ausgabe des Nettopreis
* @return der Nettopreis
*/
public double getNettoPreis() {
return nettoPreis;
}
/**
* Ausgabe des Bruttopreis
* @return der Bruttopreis
*/
public double getBruttoPreis() {
double bp; //temporaere Variable; keine Klassenvariable
if (halbeMws) {
bp = Math.round(nettoPreis * (mws / 2 + 1) * 100) / 100;
} else {
bp = Math.round(nettoPreis * (mws + 1) * 100) / 100;
}
return bp;
}
/**
* Erzeugt verkette Liste von Empfehlungen
* @param empf Anzahl Empfehlungen
*/
public void generiereEmpfehlungen(int empf) {
Buch ware1 = this;
Buch ware2;
for (int i = 1; i <= empf; i++) {
ware2 =
new Buch(ware1.getName() + " besser" + i, 31.12, isbn+"-1");
ware1.setEmpfehlung(ware2);
ware1 = ware2;
}
}
}

 Klasse Main

package s1.block8;
/**
 * Eine Hilfsklasse zur Implementierung eines Hauptprogramms
 * @author s@scalingbits.com
 * @version 1.1
 */
public class MainWare {
    /**
     * Die Methode wareTesten testet die Implementierung der
     * von Waren mit tiefem Kopieren, tiefem Vergleichen.
     * Sie nutzt nicht die Vererbung aus.
     */
    public static void warenTesten() {
        Ware ware1, ware2;
        Lager dasLager;
        // Testen der Klasse Ware
        ware1 = new Ware("Zeitung", 12.12, true);
        ware1.drucken();
        double p = ware1.getNettoPreis();
        // Generieren von Empfehlungen
        ware2 = new Ware("Potter Band 1", 31.12, false);
        ware2.generiereEmpfehlungen(7);
        // Abfrage des Lagers
        dasLager = Lager.getLager();
        dasLager.einlagern(ware1, 0);
        dasLager.einlagern(ware2, 1);
        // Prüfen der Lagerbestände mit tiefem Vergleichen
        Ware testWare = dasLager.holen(0);
        if (testWare == ware2)
            System.out.println("testware und ware2 sind identisch (gut)");
        if (testWare.equals(ware2))
            System.out.println("testware und ware2 sind inhaltsgleich (gut)");
        // vollständiges Befüllen des Lager
        for (int i = 0; i < 1000; i++) {
            ware2 = new Ware("Band" + i + "B", 12.12, true);
            ware2.generiereEmpfehlungen(7);
            dasLager.einlagern(ware2);
        }
        System.out.println("Lager vollständig gefüllt mit "
                + dasLager.lagerGroesse() + " Waren.");
        for (int i = 0; i < 1000; i++) {
            ware2 = new Ware("Volume" + i + "B", 12.12, true);
            ware2.generiereEmpfehlungen(7);
            dasLager.einlagern(ware2,i);
        }
        System.out.println("Lager erneut vollständig gefüllt mit "
                + dasLager.lagerGroesse() + " Waren.");
    }
    /**
     * Diese Methode dient zum Testen der Klasse Buch.
     * Sie nutzt die Veererbung in Java aus.
     */
    public static void buecherTesten() {
        /*
         * 2. Testen: Anlegen einer Testmethode für Bücher
         *   Erzeugen von Büchern
         *   Anlegen einer Referenz auf eine alte Auflage
         *   Drucken zweier Bücher
         * 3. Frage: Wie kann man Bücher in das Lager einfügen?
         * 5. Einfügen der Bücher in das Lager
         * 8. Anpassen der Hauptroutine
         * 8.1 Alle Instanzen vom Typ Ware sollen MusikCDs werden da die Klasse
         *    Ware jetzt abstrakt ist.
         */
        Lager dasLager;
        dasLager = Lager.getLager();
        Buch buch1 = new Buch("Das Grauen",22.22,"9876543");
        Buch buch2 = new Buch("Das Kapital",33.33,"9876543");
        buch1.setAlteAuflage(buch2);
        buch1.drucken();
        //dasLager.einlagern(buch1);
        //dasLager.einlagern(buch2);
        dasLager.drucken();
    }   
    /**
     * Das Hauptprogramm
     * 
     * @param args
     */
    public static void main(String[] args) { 
        //warenTesten();
        buecherTesten();
    }
}

 Schritt 2: Die Klasse Buch wird aus der Klasse Ware abgeleitet

Klasse Buch ist von der Klasse Ware abgeleitet

Klasse Buch

package s1.block8;
/**
 * Dies ist die Dokumentation der Klasse Ware. Ware dient zum Verwalten von Gütern
 * mit Preisen und Namen in einem Lager.
 * @author  Stefan Schneider
 * @version 1.2
 * @see     Lager
 */
public class Buch extends Ware {
    /*
     * 1. Erzeugen Sie eine Klasse Buch in dem Sie die Klasse
     *     Ware mit Ihrem Inhalt kopieren
     * 1.1 Anpassen Name
     * 1.2 Anpassen Konstruktoren
     * 1.3 Anpassen equals Methode
     * 1.4 Anlegen einer ISBN Nummer
     * 1.5 Anlegen einer hardcodierten halben Mehrwertsteuer
     * 1.6 Referenz auf eine private, optionale (ältere) Auflage
     *      Zugriffsmethoden anlegen
     * 1.7 Anpassen der Druckenmethode
     * 4. Ableiten der Klasse aus der Klasse aus der Klasse Ware
     * 4.1 extends Schlüsselwort benutzen
     * 4.2 Löschen von allem redundanten Code
     * 6. Erzeugen er Klasse MusikCD durch Kopieren der Klasse Ware
     * 6.1 Mehrwertsteuer auf vollen Mehrwertsteuer hart kodieren
     * 7. Die Klasse Ware soll nicht mehr instanziiert werden. Sie soll
     *      abstrakt werden
     */
     /**
     * Der aktuelle Mehrwertsteuersatz 2010.
     * Er liegt zur Zeit bei {@value}.
     *
     * @since 1.0
     */

private String isbn;
private Buch alteAuflage;
/**
* Referenz aus alte Auflage
* @return
*/
public Buch getAlteAuflage() { return alteAuflage; }
/**
* zuweisen einer alten Auflage
* @param alteAuflage
*/
public void setAlteAuflage(Buch alteAuflage) {
this.alteAuflage = alteAuflage;
}
/**
* Auslesen der ISBN-Nummer (eine Zeichenkette)
* @return
*/
public String getISBN() { return isbn; }
/**
* Konstruktor fuer die Klasse Ware
* @param n der Name der Ware
* @param np der Nettorpreis
* @param hmws halber Mehrwertsteuersatz für Ware gueltig
*/
public Buch(String n, double np, String myISBN) {
super(n,np,true);
isbn=myISBN;
// zusätzliche Initialiserungen....
}
/**
* tiefes Vergleichen. Berücksichtigt beim Namen nicht
* die Groß/kleinschreinung. Berücksichtigt rekursiv die
* Empfehlungen
* @param dieAndereWare
* @return wahr wenn beide Waren dem Vergleich entsprechen.
*/
public boolean equals(Buch dieAndereWare) {
boolean result;
result = super.equals((Ware)dieAndereWare)
&& (isbn.equals(dieAndereWare.isbn))
&& (((alteAuflage == null) && (dieAndereWare.alteAuflage == null))
|| ((alteAuflage != null)
&& (dieAndereWare.alteAuflage != null)
&& (alteAuflage.equals(dieAndereWare.alteAuflage))
)
);
return result;
}
/**
* Ausdrucken aller Werte auf der Konsole mit vorgebener Einrueckung
* für Empfehlungen
* @param einruecken eingerueckte Stellen für Empfehlungen
*/
protected void drucken(int einruecken) {
super.drucken(einruecken);
String leerStellen = "";
for (int i = 0; i < einruecken; i++) {
leerStellen = leerStellen + " ";
}
System.out.println(leerStellen + "ISBN:" +isbn);
if (alteAuflage != null) {
System.out.println(leerStellen + "Alte Auflage:");
alteAuflage.drucken(einruecken + 2);
}
}
}

Klasse MainBuch

Die Instanzen der Klasse Buch können jetzt in das Lager eingefügt werden

package s1.block8;
/**
 * Eine Hilfsklasse zur Implementierung eines Hauptprogramms
 * @author sschneid
 */
public class MainBuch {
     /**
     * Die Methode wareTesten testet die Implementierung der
     * von Waren mit tiefem Kopieren, tiefem Vergleichen.
     * Sie nutzt nicht die Vererbung aus.
     */

public static void warenTesten() {
Ware ware1, ware2;
Lager dasLager;
// Testen der Klasse Ware
ware1 = new Ware("Zeitung", 12.12, true);
ware1.drucken();
double p = ware1.getNettoPreis();
// Generieren von Empfehlungen
ware2 = new Ware("Potter Band 1", 31.12, false);
ware2.generiereEmpfehlungen(7);
// Abfrage des Lagers
dasLager = Lager.getLager();
dasLager.einlagern(ware1, 0);
dasLager.einlagern(ware2, 1);
// Prüfen der Lagerbestände mit tiefem Vergleichen
Ware testWare = dasLager.holen(0);
if (testWare == ware2)
System.out.println("testware und ware2 sind identisch (gut)");
if (testWare.equals(ware2))
System.out.println("testware und ware2 sind inhaltsgleich (gut)");
// vollständiges Befüllen des Lager
for (int i = 0; i < 1000; i++) {
ware2 = new Ware("Band" + i + "B", 12.12, true);
ware2.generiereEmpfehlungen(7);
dasLager.einlagern(ware2);
}
System.out.println("Lager vollständig gefüllt mit "
+ dasLager.lagerGroesse() + " Waren.");
for (int i = 0; i < 1000; i++) {
ware2 = new Ware("Volume" + i + "B", 12.12, true);
ware2.generiereEmpfehlungen(7);
dasLager.einlagern(ware2,i);
}
System.out.println("Lager erneut vollständig gefüllt mit "
+ dasLager.lagerGroesse() + " Waren.");
}
/**
* Diese Methode dient zum Testen der Klasse Buch.
* Sie nutzt die Veererbung in Java aus.
*/
public static void buecherTesten() {
/*
* 2. Testen: Anlegen einer Testmethode für Bücher
* Erzeugen von Büchern
* Anlegen einer Referenz auf eine alte Auflage
* Drucken zweier Bücher
* 3. Frage: Wie kann man Bücher in das Lager einfügen?
* 5. Einfügen der Bücher in das Lager
* 8. Anpassen der Hauptroutine
* 8.1 Alle Instanzen vom Typ Ware sollen MusikCDs werden da die Klasse
* Ware jetzt abstrakt ist.
*/
Lager dasLager;
dasLager = Lager.getLager();
Buch buch1 = new Buch("Das Grauen",22.22,"9876543");
Buch buch2 = new Buch("Das Kapital",33.33,"9876543");
buch1.setAlteAuflage(buch2);
buch1.drucken();
dasLager.einlagern(buch1);
dasLager.einlagern(buch2);
dasLager.drucken();
}

/**
* Das Hauptprogramm
*
* @param args
*/
public static void main(String[] args) {

//warenTesten();
buecherTesten();
}
}

Stufe 3: Klasse MusikCD

Klasse MusikCD

package s1.block8;
/**
 * Dies ist die Dokumentation der Klasse Ware. Ware dient zum Verwalten von Gütern
 * mit Preisen und Namen in einem Lager.
 * @author  s@scalingbits.com
 * @version 1.3
 * @see     Lager
 */
public class MusikCD extends Ware {
    /*
     * 6. Erzeugen er Klasse MusikCD durch Kopieren der Klasse Ware
     * 6.1 Mehrwertsteuer auf vollen Mehrwertsteuer hart kodieren
     * 7. Die Klasse Ware soll nicht mehr instanziiert werden. Sie soll
     *      abstrakt werden
     */
    /**
     * Konstruktor fuer die Klasse Ware
     * @param n der Name der Ware
     * @param np der Nettorpreis
     * @param hmws halber Mehrwertsteuersatz für Ware gueltig
     */
    public MusikCD(String n, double np) {
        super(n,np,false);
    }
    /**
     * tiefes Vergleichen. Berücksichtigt beim Namen nicht
     * die Groß/kleinschreinung. Berücksichtigt rekursiv die
     * Empfehlungen
     * @param dieAndereWare
     * @return wahr wenn beide Waren dem Vergleich entsprechen.
     */
    public boolean equals(MusikCD dieAndereWare) {
        return super.equals((Ware)dieAndereWare);
    }
}

 Klasse MainCD

package s1.block8;
/**
 * Eine Hilfsklasse zur Implementierung eines Hauptprogramms
 * @author s@scalingbits.com
 * @version 1.3
 */
public class Main {
    /**
     * Die Methode wareTesten testet die Implementierung der
     * von Waren mit tiefem Kopieren, tiefem Vergleichen.
     * Sie nutzt nicht die Vererbung aus.
     */
    public static void warenTesten() {
        Ware ware1, ware2;
        Lager dasLager;
        // Testen der Klasse Ware
        ware1 = new Ware("Zeitung", 12.12, true);
        ware1.drucken();
        double p = ware1.getNettoPreis();
        // Generieren von Empfehlungen
        ware2 = new Ware("Potter Band 1", 31.12, false);
        ware2.generiereEmpfehlungen(7);
        // Abfrage des Lagers
        dasLager = Lager.getLager();
        dasLager.einlagern(ware1, 0);
        dasLager.einlagern(ware2, 1);
        // Prüfen der Lagerbestände mit tiefem Vergleichen
        Ware testWare = dasLager.holen(0);
        if (testWare == ware2)
            System.out.println("testware und ware2 sind identisch (gut)");
        if (testWare.equals(ware2))
            System.out.println("testware und ware2 sind inhaltsgleich (gut)");
        // vollständiges Befüllen des Lager
        for (int i = 0; i < 1000; i++) {
            ware2 = new Ware("Band" + i + "B", 12.12, true);
            ware2.generiereEmpfehlungen(7);
            dasLager.einlagern(ware2);
        }
        System.out.println("Lager vollständig gefüllt mit "
                + dasLager.lagerGroesse() + " Waren.");
        for (int i = 0; i < 1000; i++) {
            ware2 = new Ware("Volume" + i + "B", 12.12, true);
            ware2.generiereEmpfehlungen(7);
            dasLager.einlagern(ware2,i);
        }
        System.out.println("Lager erneut vollständig gefüllt mit "
                + dasLager.lagerGroesse() + " Waren.");
    }
    /**
     * Diese Methode dient zum Testen der Klasse Buch.
     * Sie nutzt die Veererbung in Java aus.
     */
    public static void buecherTesten() {
        /*
         * 2. Testen: Anlegen einer Testmethode für Bücher
         *   Erzeugen von Büchern
         *   Anlegen einer Referenz auf eine alte Auflage
         *   Drucken zweier Bücher
         * 3. Frage: Wie kann man Bücher in das Lager einfügen?
         * 5. Einfügen der Bücher in das Lager
         * 8. Anpassen der Hauptroutine
         * 8.1 Alle Instanzen vom Typ Ware sollen MusikCDs werden da die Klasse
         *    Ware jetzt abstrakt ist.
         */
        Lager dasLager;
        dasLager = Lager.getLager();
        Buch buch1 = new Buch("Das Grauen",22.22,"9876543");
        Buch buch2 = new Buch("Das Kapital",33.33,"9876543");
        buch1.setAlteAuflage(buch2);
        buch1.drucken();
        dasLager.einlagern(buch1);
        dasLager.einlagern(buch2);
        dasLager.drucken();
    }  
    /**
     * Diese Methode dient zum Testen der Klasse Buch.
     * Sie nutzt die Veererbung in Java aus.
     */
    public static void CDsTesten() {
        /*
         * 2. Testen: Anlegen einer Testmethode für Bücher
         *   Erzeugen von Büchern
         *   Anlegen einer Referenz auf eine alte Auflage
         *   Drucken zweier Bücher
         * 3. Frage: Wie kann man Bücher in das Lager einfügen?
         * 5. Einfügen der Bücher in das Lager
         * 8. Anpassen der Hauptroutine
         * 8.1 Alle Instanzen vom Typ Ware sollen MusikCDs werden da die Klasse
         *    Ware jetzt abstrakt ist.
         */
        Lager dasLager;
        dasLager = Lager.getLager();
        MusikCD cd1 = new MusikCD("Thriller",8.88);
        MusikCD cd2 = new MusikCD("Peter und der Wolf",9.99);
        cd1.setEmpfehlung(cd2);
        cd1.drucken();
        dasLager.einlagern(cd1);
        dasLager.einlagern(cd2);
        dasLager.drucken();
    }   
    /**
     * Das Hauptprogramm
     * 
     * @param args
     */
    public static void main(String[] args) { 
        //warenTesten();
        buecherTesten();
        CDsTesten();
    }
}

 

Anonymous (not verified)

Fri, 12/04/2015 - 19:34

die Zeile:
public int price = 99;

in der Klasse CircleIsPoint ist dort sicher nur aus Versehen hineingeraten?