Programmieren, Java

Hallo, ich bräuchte eure Hilfe bei folgender Aufgabe

  1. a) Erstellen Sie eine Klasse Kreis. Ein Kreis sei gekennzeichnet durch
    einen Mittelpunkt, einen Radius sowie eine Farbe (z. B. blau). Der
    Mittelpunkt besteht aus einer x- und einer y-Koordinate.
    Neben diesen Attributen enthält die Klasse get- und set- Methoden für die
    vier Attribute sowie drei Konstruktoren.
    Der erste Konstruktor bekommt für alle Attribute der Klasse einen Wert
    überwiesen und initialisiert damit die Attribute. Der zweite Konstruktor
    bekommt nur die Koordinaten des Mittelpunktes sowie einen Wert für den
    Radius übergeben und initialisiert damit die Attribute. Die Farbe wird in
    diesem Fall auf „farblos“ gesetzt. Der dritte Konstruktor ist parameterlos und
    enthält keine Anweisung.

Das Programm habe ich schon angefangen zu schreiben und sieht folgendermaßen aus:

public class Kreis {

private double x, y;
private double radius;
private String farbe;
private double mittelpunkt;

public Kreis(double x, double y, double radius, String farbe) {
this.x = x;
this.y = y;
this.radius = radius;
this.farbe = farbe;
x = 3;
y = 4;
radius = 7;
farbe = „blau“;
}

public double getMittelpunkt(double x, double y) {
return mittelpunkt;

}
}

Meine Frage: WIe kann ich den Mittelpunkt in der return Anweisung in folgender Form ausgeben lassen: (x-Koord.;y-Koord)
und wie kann ich beim 2. Konstruktor sowohl den Mittelpunkt als auch den Radius zurückgeben? Dann müsste ich ja 2 get-Anweisungen in einer Zeile haben, wobei ich dann wieder einen Fehler erhalte.

Der Mittelpunkt ist (wie der Name schon sagt) ein Punkt. Bei dieser Aufgabe wäre es wohl am einfachsten zwei get-Methoden zu machen:
getMittelpunktX()
getMittelpunkty()

Der Konstruktor nimmt Werte entgegen, er gibt niemals welche zurück. Von dem her verstehe ich den letzten Teil der Frage nicht.

Grüße, JasonDelife.

aber wenn ich 2 get-Methoden für den Mittelpunkt anlege dann wären es ja auch 2 Konstruktoren und ich soll das ganze ja durch einen realisieren

aber wenn ich 2 get-Methoden für den Mittelpunkt anlege dann
wären es ja auch 2 Konstruktoren und ich soll das ganze ja
durch einen realisieren

Du kannst mit einer get-Methode immer nur einen Wert zurückgeben, aber ein Konstruktor kann mehrere Werte entgegen nehmen.

Jetzt habe ich es folgendermaßen gemacht:

public class Kreis {

private double x, y;
private double radius;
private String farbe;
private double mittelpunktX;
private double mittelpunktY;

public Kreis(double x, double y, double radius, String farbe) {
this.x = x;
this.y = y;
this.radius = radius;
this.farbe = farbe;
x = 3;
y = 4;
radius = 7;
farbe = „blau“;
}

public double getMittelpunktX(double x) {
return mittelpunktX;

}

public double getMittelpunktY(double y) {
return mittelpunktY;

}

public double getRadius(double radius) {
return radius;

}
}

Das sind doch jetzt 3 Konstruktoren für den 2. Konstruktor in der Aufgabenstellung, obwohl es nur einer sein darf oder nicht?

Du verwechselst hier Konstruktoren und Methoden. Das sind zwei paar Schuhe.

Grüße, JasonDelife.

Achso… also müsste ich die 3 get-Methoden jetzt in einen 2. Konstruktor packen? Wie müsste ich diesen denn nennen?

Achso… also müsste ich die 3 get-Methoden jetzt in einen 2.
Konstruktor packen? Wie müsste ich diesen denn nennen?

Sorry, aber du hast den Sinn von Konstruktoren und get/set-Methoden nicht wirklich verstanden.
Ohne dieses Wissen wirds aber schwierig.
Ein paar Tipps:

  1. Konstruktoren heißen immer wie die Klasse.
  2. Sie geben NIE etwas zurück.
  3. Sie können aber Werte entgegennehmen (Parameter).
  4. get-Methoden haben KEINE Parameter, da sie einfach nur den Wert zurückgeben.
  5. Eine Klasse kann mehrere Konstruktoren haben, die alle gleich heißen (Konstruktoren müssen ja wie die Klasse heißen). Allerdings unterscheiden sich Typ und Anzahl der Parameter.

Grüße, JasonDelife.

Bloß wenn ich den Konstruktor vor die get-Methode setze erhalte ich eine Fehlermeldung.

immer wenn man meint, meine Methode müsste eigentlich zwei Werte zurückgeben, ist es Zeit für ein Objekt.

public java.awt.Point getMittelpunkt

> wie kann ich beim 2. Konstruktor sowohl den Mittelpunkt als auch den Radius zurückgeben?
ein Konstruktur kann und soll gar nix zurückgeben, hat ja auch keinen Rückgabewert
public Kreis(…)

zwei Methoden getMittelpunkt, getRadius die aufgerufen werden können, empfehlen sich

Hi Mathematikus20,

lass mich mal versuchen dir zu helfen. In der Aufgabe ist die Rede von 4 Attributen: x, y, radius und farbe.

Vom einem Attribut „Mittelpunkt“ ist nirgends die Rede. Ich glaube du machst dir das Leben zu schwer. Somit hast du 4 Attribute und 4 dazugehörige setter, die den Attributen Werte zuweisen und 4 dazugehörige getter die die Werte der Attribute zurückliefern.

Dazu noch 3 Konstruktoren. Durch einen Konstruktor wird ein Objekt dieser Klasse erzeugt, ein Konstruktor hat nie einen Rückgabewert. Du kannst aus einen Konstruktor aus einem anderen Konstruktor heraus mit „this(…)“ aufrufen. Da in der Aufgabe steht, das der 3. Konstruktor parameterlos sein soll, müssen die Variablen mit vernünftigen Werten vorinitialisiert werden.

Ich würde die Aufgabe folgendermaßen lösen:

public class Kreis {

private double x = 0, y = 0;
private double radius = 0;
private String farbe = „farblos“;

public Kreis(double x, double y, double radius, String farbe) {
this.x = x;
this.y = y;
this.radius = radius;
this.farbe = farbe;
}

public Kreis(double x, double y, double radius) {
this(x, y, radius, „farblos“);
}

public Kreis() {
}

public void setX(double x) {
this.x = x;
}

public double getX() {
return this.x;
}

public void setY(double y) {
this.y = y;
}

public double getY() {
return this.y;
}

public void setRadius(double r) {
this.radius = r;
}

public double getRadius() {
return this.radius;
}

public void setFarbe(String f) {
this.farbe = f;
}

public String getFarbe() {
return this.farbe;
}
}

Wenn du unbedingt noch eine Methode möchtest, die dir den Mittelpunkt zurückliefert, musst du dir eine Klasse erstellen, die zwei double-Werte beinhaltet. Du solltest dir überlegen, ob es überhauput nötig ist, double Werte (Gleitkomma) zu verwenden oder ob nicht int Werte (Ganzzahlen) reichen würden.

Gruß
Jochen

Hallo, Sie haben Recht, das habe ich zunächst gar nicht beachtet.
Vielen Dank für Ihre Hilfe :smile:
lg