Ich habe folgende Aufgabe bekommen, die ich auch zum großteil fertig habe, allerdings weiß ich nicht so recht, was ich bei Aufgabe Nummer 3 machen muss bzw. wie ich bei Nummer 2 mein Vorgehen erklären soll.
Bitte um Hilfe
LG
Meike
1. Entwickeln Sie die Definition für eine Klasse „Kreis“. Diese Klasse soll die Datenelemente „r“ (für den Radius), „x“ und „y“ (für die Bildschirmkoordinaten) enthalten. In den Klassen sollen Methoden zur Bildung einer Instanz der Klasse sowie zur Berechnung von Umfang und Fläche eines Objektes der Klasse implementiert werden.
Meine Antwort:
public class Kreis
{
private final double pi = 3,1415296;
private float radius;
private int xkoordinate;
private int ykoordinate;
public Kreis (float r, int x, int y)
{
radius = r;
xkoordinate = x;
ykoordinate = y;
}
public double umfang ()
{
return pi * radius;
}
public double flaeche ()
{
return pi * radius * radius;
}
}
2. Leiten Sie eine Klasse „Ellipse“ von der Klasse „Kreis“ ab. Implementieren Sie eine Methode zur Erzeugung einer Instanz dieser Klasse. Überschreiben Sie die Methode zur Berechnung der Fläche aus der Klasse „Kreis“. Erläutern Sie Ihr Vorgehen.
Meine Antwort:
public class Ellipse extends Kreis
{
// Hierdurch werden r, x, y vereerbt
private double ra;
public double getRa ()
{
return Ra ;
}
public void Flaeche ()
{
return pi * radius * radius;
}
}
3. Bilden Sie jeweils eine Instanz der beiden Klassen "Kreis" und "Ellipse". Schreiben Sie für jede dieser Instanzen einen Aufruf der Methode zur Berechnung der Fläche.
private final double pi = 3,1415296;
In Java mußt du einen Punkt, keinen Komma benutzen.
Im Übrigen gibt es bereits Math.PI
public double umfang () {return pi * radius; }
Sicher das das der Umfang eines Kreises ist? :bae:
2. Leiten Sie eine Klasse „Ellipse“ von der Klasse „Kreis“ ab. Implementieren Sie eine Methode zur Erzeugung einer Instanz dieser Klasse. Überschreiben Sie die Methode zur Berechnung der Fläche aus der Klasse „Kreis“. Erläutern Sie Ihr Vorgehen.
Meine Antwort:
public class Ellipse extends Kreis
{
// Hierdurch werden r, x, y vereerbt private double ra;
public double getRa ()
{
return Ra ;
}
ra od Ra?
public void Flaeche ()
{
return pi * radius * radius;
} Hier stimmt die Berechnung der Fläche nicht.
Mhh, deinen Code habe ich unten nochmal in vereinfachter Form (wie ich finde ) geschrieben.
Für Pi würde ich Math.PI nutzen, dass ist genauer als deine eingegebene Näherung.
Bei deiner Ellipsen-Klasse blicke ich nicht ganz durch, deshalb habe ich sie mal geschrieben, wie ich sie machen würde.
Kreisklasse
Code:
public class cKreis
{
protected int x,y; // protected deshalb, weil sie vererbt werden.
protected float r;
public cKreis(int px, int xy, float pr)
{
x = px;
y = py;
r = pr;
}
public double berechneFlaeche()
{
return (r*r*Math.PI);
}
public double berechneUmfang()
{
return (2*r*Math.PI);
}
Ellipsenklasse
Code:
public class cEllipse extends cKreis
{
// Es sind glaube ich noch mehr Attribute nötig als beim Kreis, da eine Ellipse verschiedene Radien bei verschiedenen // Winkeln hat, aber kA.
public cEllipse(int px, py, pr)
{
super(px,py,pr);
}
public double berechneFlaeche()
{
return(xxx); // Hier bitte Formel für Fläche einer Ellipse einfügen ^^
}
}
Bei Aufgabe 3 verstehe ich dein Problem nicht . Ich vermute, dass du mit dem Begriff Instanz nicht viel anfangen kannst. Korrigiere mich, wenn ich falsch liege.
Also eine Instanz einer Klasse ist ganz einfach ausgedrückt eine im Programm initialisierte "Version" deiner Klasse. Denn die Klassen, die du geschrieben hast sind im Grunde ja nur Bauanleitungen für Objekte/Instanzen.
In einer dritten Klasse mit main-Methode zum Programmstart würde das ganze dann beispielsweise so aussehen:
Code:
public class cProgrammstart
{
public static void main(String[] args)
{
cKreis meinKreis = new Kreis(3f,0,0);
cEllipse meineEllipse = new Ellipse (3f,0,0); // siehe Klassenbeschreibung oben.
System.out.println(meinKreis.berechneFlaeche());
System.out.println(meineEllipse.berechneFlaeche());
}
}