Klassen Mithilfe eines Kopierkonstruktors eine Klasse ein Feld füllen

eric.l

Neues Mitglied
Guten Abend,
aufgrund meiner Verzweiflung hoffe ich hier Hilfe zu finden/ Denkanstöße zu bekommen.
Die Aufgabe sieht wie folgt aus:

Schreibe einen Konstruktor, bei dem eine variable Anzahl von Objekten der Klasse Punkt übergeben werden kann. Initialisere im Konstruktor dann die Instanzvariable ecken mit einer entsprechenden Größe und fülle das Feld mit Kopien der als Parameter übergebenen Punkte. Nutze hierzu den Kopierkonstruktor der Klasse Punkt.


Die thematisierte Klasse Punkt habe ich gelöst und auch den Kopierkonstruktor erstellt. Die Klasse sieht wie folgt aus:
Java:
public class Punkt {
private double x,y;


     public Punkt (double x, double y) {
    this.setX(x);
    this.setY(y);
     }
     public Punkt (Punkt p) { // Kopierkonstruktor
     this.x=p.x;
     this.y=p.y;
     }
    public double getX() {
        return this.x;
    }

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

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

Da ich aber leider keine Anwendungsbeispiele zu einem Kopierkonstruktor finde und in meinen Folien auch dazu kaum was erklärt wird, tue ich mich schwer die Teilaufgabe zu bearbeiten. Hier was ich aber bisher habe:
Java:
public class Polygon {
 private Punkt[] ecken;
 public Polygon (Punkt... ecken) {
    this.ecken= ecken;
 }
}
Auch der Teil: "Initialisere im Konstruktor dann die Instanzvariable ecken mit einer entsprechenden Größe" wirft bei mir Fragen auf, da ich nicht genau verstehe mit welcher Größe ich das initialisieren soll.

Vielleicht kann mir jemand weiter helfen!
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal sieht es schon relativ gut aus. Das Problem bei der aktuellen Lösung ist nur, dass Du die Punkte, die übergeben wurden, speicherst. Diese können aber im Anschluss auch noch geändert werden und das würde sich auf das erstellte Polygon auswirken.

Damit das nicht passieren kann, sollst Du nicht die übergebenen Punkte speichern sondern Kopien. Der Copy Konstruktor von Punkt sieht auch gut aus. Die Nutzung ist relativ einfach - wie Du es ja auch schon kennst, musst Du lediglich die Parameter des Konstruktors angeben. Der Parameter ist bei Copy Konstruktor ein anderer Punkt.

Also musst Du lediglich für jede Ecke ein entsprechend neuen Punkt erstellen und diesen speichern.
 

eric.l

Neues Mitglied
Erst einmal sieht es schon relativ gut aus. Das Problem bei der aktuellen Lösung ist nur, dass Du die Punkte, die übergeben wurden, speicherst. Diese können aber im Anschluss auch noch geändert werden und das würde sich auf das erstellte Polygon auswirken.

Damit das nicht passieren kann, sollst Du nicht die übergebenen Punkte speichern sondern Kopien. Der Copy Konstruktor von Punkt sieht auch gut aus. Die Nutzung ist relativ einfach - wie Du es ja auch schon kennst, musst Du lediglich die Parameter des Konstruktors angeben. Der Parameter ist bei Copy Konstruktor ein anderer Punkt.

Also musst Du lediglich für jede Ecke ein entsprechend neuen Punkt erstellen und diesen speichern.
Hallo,
erstmal Danke für deine Antwort. Ich verstehe die Theorie dahinter dank der Antwort, nur an der Umsetzung hapert es leider immer noch.
Hast du da eventuell noch einen guten Tipp?
 

KonradN

Super-Moderator
Mitarbeiter
Du sollst ein Array mit Punkt Elementen speichern. Das könntest Du erstellen. Dann könntest Du es mit neuen Punkten füllen...

Jetzt musst Du Dir nur überlegen, woher Du die Anzahl bekommen kannst und wie Du die neuen Punkt Instanzen erzeugen kannst.
 

Neue Themen


Oben