Hat jemand eine Lösung für diese Übung (Java)?
Das ist die Aufgabe:
Implementieren Sie eine Klasse rectangle (=Rechteck), deren Konstruktor die Höhe und die Breite verlangt. Eine Methode getArea der Klasse Rechteck gibt dessen Fläche zurück. Implementieren Sie zudem eine Klasse square (=Quadrat), die sich von Rechteck ableitet. square hat keine eigenen Attribute oder Methoden. Im Konstruktor von Quadrat wird die Höhe und die Breite des Rechtecks gesetzt. Beim Aufruf der Methode getArea für eine Instanz von square soll dessen Fläche zurückgegeben werden.
Das ist meine bisherige Lösung, aber mir kommt die irgendwie falsch vor:
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;
}
}
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;
}
}
Wenn du schrittweise die Angabe befolgst, hast du deine Lösung. Was genau ist denn unklar?
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
Woran genau scheiterst du?
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{
}
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.