Kopierkonstruktor / tiefe Kopie

x-trillian

Neues Mitglied
Hallo Leute,

ich soll eine Methode in der Klasse Pflanze implementieren die eine tiefe Kopie erzeugt und habe folgende Vorgabe:

Java:
public class Pflanze {
   private Farbe farbe;
   private String bezeichnung;
   private float preis;
}

public class Farbe{
   private int rot;
   private int gruen;
   private int blau;
}

Wie bekomme ich die Farbe in den Kopierkonstruktor, so dass es dann auch klappt? Hier ist mein bisheriger Versuch, ich bin mir sicher dass es eleganter geht, aber ich bin halt noch relativ am Anfang mit meinen Programmierkenntnissen...:

Java:
public Pflanze(Pflanze pflanze){
     this.bezeichnung = pflanze.bezeichnung;
     this.preis = pflanze.preis;
//     this.farbe.rot = pflanze.farbe.rot;
//     this.farbe.gruen = pflanze.farbe.gruen;
//     this.farbe.blau = pflanze.farbe.blau;
   }

   public Pflanze(){
   }

   public static Pflanze pflanzeKopieren(){
     Pflanze pflanze1 = new Pflanze();    
     pflanze1.bezeichnung = "Rose";
     pflanze1.preis = 3.99f;
//     pflanze1.farbe.rot = 255;
//     pflanze1.farbe.gruen = 255;
//     pflanze1.farbe.blau = 255;
//    
     Pflanze pflanze = new Pflanze(pflanze1);
     return pflanze;
   }
 
Zuletzt bearbeitet von einem Moderator:
Schon mal was von gettern und settern gehört?
Außerdem: wenn du eine Kopie der Pflanze willst, warum schreibst du dann hard-coded Werte (Rose und 3.99) rein?
Und noch dazu: lies mal die Grundlagen der OOP. Das was du da fragst steht in so ziemlich jedem Buch ganz am Anfang.
 
Wie bekomme ich die Farbe in den Kopierkonstruktor, so dass es dann auch klappt?
Getter und Setter bedarf es innerhalb derselben Klasse nicht. Den Kommentar von flopalko einfach ignorieren.
Wenn du mit "derselben Klasse" die Pflanze-Klasse meinst, hast dun recht. Der TO hat aber von der "Farbe" gesprochen. Und die bekommt man in einer Pflanzen-Kopiermethode nur kopiert, wenn Farbe selber eine Kopiermethode mitbringt oder setter/getter für die drei Farbwerte.
Deswegen: ich bin gegen das ignorieren. Mit seinem Hinweis auf die "hard-coded Werte" hat flopalko ausserdem vollkommen recht.
Weitere Frage von mir: was soll die statische Methode, wenn Pflanze einen Kopierkonstruktor hat?
 

Neue Themen


Zurück
Oben