Aufgabe 3: Geometrie 6 Punkte
Betrachten Sie die Klasse Figur:
Implementieren Sie eine Klasse Rechteck und eine Klasse Kreis, die beide von der Klasse Figur erben
sollen.
Die Klasse Rechteck soll die Klasse Figur um folgende Attribute erweitern:
• laenge vom Typ double
• breite vom Typ double
und folgende Methoden haben:
• einen Konstruktor, der alle Attribute des Rechtecks initialisiert.
• eine Methode berechneFlaeche, die den Flächeninhalt berechnet und zurückgibt
(Flächeninhalt eines Rechtecks: Länge · Breite).
• eine Methode getType, die die gleichnamige Methode der Superklasse überschreibt.
Die Klasse Kreis soll die Klasse Figur um folgendes Attribut erweitern:
• radius vom Typ double
und folgende Methoden haben:
• einen Konstruktor, der alle Attribute des Kreis initialisiert.
• eine Methode berechneFlaeche, die den Flächeninhalt berechnet und zurückgibt
(Flächeninhalt eines Kreises: Pi · r^2).
• eine Methode getType, die die gleichnamige Methode der Superklasse überschreibt. Benutzen Sie für die Kreiszahl Pi in Java den Ausdruck Math.PI.
Implementieren Sie eine Klasse TestGeometrie, in dessen main-Methode Sie:
• von jeder der drei Klassen ein Objekt erzeugen.
• mindestens zwei Objekte verschieben.
• von mindestens zwei Objekten die Bezeichnung, die Position und wenn möglich den Flächeninhalt
auf der Konsole ausgeben.
Meine Subkassen lauten:
und
beide lassen sich auch compilieren.
Aber nicht meine Test-Datei:
Woran liegt es nur??
Herzlichen Dank schonmal, und erholsame vorlesungsfreie Tage, liebe Grüße, Franziska
Betrachten Sie die Klasse Figur:
Java:
public class Figur {
private double pos_x;
private double pos_y;
public Figur(double pos_x, double pos_y) {
this.pos_x = pos_x;
this.pos_y = pos_y;
}
public double getPosX() {
return this.pos_x;
}
public double getPosY() {
return this.pos_y;
}
// verschiebt die Figur um dx in x-Richtung und um dy in y-Richtung
public void verschieben(double dx, double dy) {
this.pos_x += dx;
this.pos_y += dy;
}
// gibt die Bezeichnung zurueck
public String getType() {
return "Figur";
}
}
sollen.
Die Klasse Rechteck soll die Klasse Figur um folgende Attribute erweitern:
• laenge vom Typ double
• breite vom Typ double
und folgende Methoden haben:
• einen Konstruktor, der alle Attribute des Rechtecks initialisiert.
• eine Methode berechneFlaeche, die den Flächeninhalt berechnet und zurückgibt
(Flächeninhalt eines Rechtecks: Länge · Breite).
• eine Methode getType, die die gleichnamige Methode der Superklasse überschreibt.
Die Klasse Kreis soll die Klasse Figur um folgendes Attribut erweitern:
• radius vom Typ double
und folgende Methoden haben:
• einen Konstruktor, der alle Attribute des Kreis initialisiert.
• eine Methode berechneFlaeche, die den Flächeninhalt berechnet und zurückgibt
(Flächeninhalt eines Kreises: Pi · r^2).
• eine Methode getType, die die gleichnamige Methode der Superklasse überschreibt. Benutzen Sie für die Kreiszahl Pi in Java den Ausdruck Math.PI.
Implementieren Sie eine Klasse TestGeometrie, in dessen main-Methode Sie:
• von jeder der drei Klassen ein Objekt erzeugen.
• mindestens zwei Objekte verschieben.
• von mindestens zwei Objekten die Bezeichnung, die Position und wenn möglich den Flächeninhalt
auf der Konsole ausgeben.
Meine Subkassen lauten:
Java:
public class Rechteck extends Figur {
double laenge;
double breite;
public Rechteck(double pos_x, double pos_y, double laenge, double breite){
super(pos_x,pos_y);
this.laenge=laenge;
this.breite=breite;
}
public double berechneFlaeche(){
return (laenge*breite);
}
public String getType() {
return "Rechteck";
}
}
und
Java:
public class Kreis extends Figur {
double radius;
public Kreis(double pos_x, double pos_y, double radius){
super(pos_x,pos_y);
this.radius=radius;
}
public double berechneFlaeche2(double radius){
return (this.radius*this.radius*Math.PI);
}
public String getType() {
return "Kreis";
}
}
beide lassen sich auch compilieren.
Aber nicht meine Test-Datei:
Java:
public class TestGeometrie{
public static void main (String[] args){
Figur[] figuren=new Figur[3];
figuren[0]=new Figur(2.0,3.0);
figuren[1]=new Rechteck(3.6,2.6,1.1,4.7);
figuren[2]=new Kreis(1.0,3.8,5.8);
for (int i = 0 ; i <= 2; i++){
System.out.println("Die erste Figur ist ein/e "+figuren[i].getType()+" und besitzt die Koordinaten ("+figuren[i].getPosX()+"/"+figuren[i].getPosY()+") und besitzt einen Flächeninhalt von "+figuren[1].berechneFlaeche());
}
}
}
Woran liegt es nur??
Herzlichen Dank schonmal, und erholsame vorlesungsfreie Tage, liebe Grüße, Franziska