Hat jemand eine Lösung für diese Übung (Java)?


10.02.2021, 10:02

public class rectangle{

public rectangle (int hoehe, int breite){

}

public double getArea(){

return hoehe x breite;

}

}

public class square extends rectangle{

public square(){

hoehe = 20;

breite = 30;

}

}

alfredo153  10.02.2021, 09:26

Wenn du schrittweise die Angabe befolgst, hast du deine Lösung. Was genau ist denn unklar?

Fabs1106 
Fragesteller
 10.02.2021, 11:14

Habe eine Lösung, aber mir kommt die irgendwie nicht richtig vor. Deshalb wollte ich nach einer Lösung fragen. Habe meine Lösung in der Frage ergänzt

MrAmazing2  10.02.2021, 09:56

Woran genau scheiterst du?

Fabs1106 
Fragesteller
 10.02.2021, 11:16

Habe eine Lösung, aber mir kommt die irgendwie nicht richtig vor. Deshalb wollte ich nach einer Lösung fragen. Habe meine Lösung in der Frage ergänzt

2 Antworten

Deine Lösung ist nicht falsch, nur unvollständig. Der einzige Fehler, der mir direkt ins Auge fällt, ist die Multiplikation der Höhe und der Breite. Als Multiplikationszeichen verwendet Java, wie auch C und andere C-ähnliche Sprachen das Sternchen (*).

Ansonsten fehlen dir nur noch öffentliche Variablen für Höhe und Breite. Denn alles, was im Konstruktor definiert ist, besonders die Parameter, ist nur dort verfügbar. Alle davon abgeleiteten Klassen kennen diese Parameter jedoch nicht.

Tipp: Setze dir einen Standard für den Datentyp, den du verwenden möchtest. Damit meine ich, dass die Höhe und die Breite denselben Typ haben sollen, wie die Methode für die Fläche. Wenn also die Variablen beide int sind, sollte auch die Methode einen int zurückgeben. So vermeidest du Rundungsfehler.

Wenn die Vorgabe durch die Aufgabe lautet, dass die Namen der Klassen mit einem Kleinbuchstaben beginnen sollen, wäre es vielleicht auch gut, über der Klassendefinition einen Kommentar zu schreiben, der dies anmerkt. Denn in Java ist es eigentlich so, dass Klassennamen mit einem Großbuchstaben beginnen. Hier ein Beispiel:

// so sähe es richtig aus:
public class Square{
}

// Vorgabe durch Aufgabenstellung: Klassennamen werden komplett klein geschrieben
public class rectangle{
}
Woher ich das weiß:Hobby

Zuallererst fehlen deiner Rectangle-Klasse die nötigen Attribute/Felder/Instanzvariablen, um Länge und Breite zu speichern. Du übergibst die Werte dem Konstruktor, aber machst nichts mit ihnen. Die Klasse hat keinerlei Daten.

Nebenbei ist der Operator für Multiplikation ein *, kein x. Warum probierst du diesen Code nicht einfach selbst aus?

Und beim Square hast du die Aufgabenstellung missverstanden. Was ist ein Quadrat? Ein Rechteck mit identischer Länge und Breite. Also machst du einen Konstruktor der nur einen Parameter (Seitenlänge) nimmt, und setzt diese dann in den Konstruktor von Rechteck ein.