Kindklassen sollen Ihre Methoden selbst implementieren

flauschig

Mitglied
Hallo,
ich habe eine Problem wegen der Vererbung. Stichwort: Template-Methode.
Es geht um die Vererbung mit 2D-Objekt.
Ich soll Objekt als Oberklasse von z.B. Kreis oder Polygon aber ohne lnstanzvariablen und mit
Template-Methode gibInfo() realisieren.
lstanzvariablen sind aber nicht erlaubt und die Ausgabe sollte dreizeilig erscheinen!
Ein Beispiel der Ausgabe:
Kreis <- die Gruppe halt. Kann auch Polygon sein.
Breite 3
Höhe 4

Folgenden Code habe ich und ich muss dann die gibInfo() ausfüllen. Ich weis aber leider nicht wie:
Java:
public abstract class 2DObjekt {

    abstract String gibTyp();
    abstract int gibBreite();
    abstract int gibHoehe();
 
    public String gibInfo() {
    
        ???
            
    }
}
Was mir dazu einfällt ist, dass
Java:
gibTyp() + "\n" + "Breite" + gibBreite() + "\n" + "Höhe" + gibHoehe();
auftauchen muss.
Das "\n" ist dazu da, um es dreizeilig zu erscheinen lassen in der Ausgabe.
Kann mir jemand helfen, dass zu realisieren und erklären? Bin da leider Anfänger. Das wäre nett. Danke.
Grüße 🙂
 
Zuletzt bearbeitet:
Java:
public abstract class 2DObjekt {

    abstract String gibTyp();
    abstract int gibBreite();
    abstract int gibHoehe();
 
    public String gibInfo() {
        return gibTyp() + "\n" + "Breite" + gibBreite() + "\n" + "Höhe" + gibHoehe();   
    }
}

Danke für den Hinweis. Wäre das dann so richtig?
Ich muss das Ganze ja noch irgendwie ausgeben können. Weis grad nicht wie.
 
Java:
/**
 * 
 * @author D.W. at J.F.o.
 */
public abstract class A2DObjekt {
    abstract String gibTyp();

    abstract int gibBreite();

    abstract int gibHoehe();

    @Override
    public String toString() {
        return gibTyp() + " : " + gibBreite() + " x " + gibHoehe();
    }

    public static void main(String[] args) {
        System.out.println(new Dreieck(5, 6, 7)); // etwa : 5.879 zu a
    }
}

class Dreieck extends A2DObjekt {
    private int a2, b2, c2;

    Dreieck(int a, int b, int c) { // "sollte" public sein
        a2 = a;
        b2 = b;
        c2 = c;
    }

    @Override
    String gibTyp() {
        return this.getClass().getName();
    }

    @Override
    int gibBreite() {
        return Math.max(a2, Math.max(b2, c2));
    }

    @Override
    int gibHoehe() {
        return (int) Math.round((2.0 / a2) * Math.sqrt((0.5) * (a2 + b2 + c2) * ((0.5) * (a2 + b2 + c2) - a2) * ((0.5) * (a2 + b2 + c2) - b2) * ((0.5) * (a2 + b2 + c2) - c2)));
    }
}
 

Zurück
Oben