Programmieren Objekt kopieren

kralex68

Lieutenant
Registriert
Juni 2008
Beiträge
811
Ich habe hier eine Aufgabe, dessen Trivialität mir zwar bewusst ist, aber dessen korrekte Implementierung nicht.
Falls ich den Codebereich falsch eingefügt habe, würde ich gerne wissen, wie ich ihn richtig darstellen lasse.

Der Code ist eine Klasse über Minuten und Stunden.

Code:
 private int minute;

    public Period ( int min, int stu)
    {
           if ( min >0)
           {
               minute = min;
            }
            else
            {
                minute = 0;
            }
            
            if ( stu >0)
            {
                minute += stu*60;
            }
            else
            {;}
    }
    public Period (int min)
    {
        if ( min>0)
        {
            minute = min;
            
        }
        else
        {
            minute = 0;
            
        }
    }
Meine Aufgabe ist jetzt die Erstellung einer Methode clone, die eine Kopie des Period-Objektes erstellt und zurückgibt. Dazu soll vorher ein neues Objekt mit gleichem Inhalt erstellt werden. Sähe es so aus?

Code:
public Period copy()
    {
        Period copy = new Period (minute);
        return copy;
        
    }
 
Zuletzt bearbeitet:
[ code ] ..... [ / code ] ohne die Leerzeichen und deinen Code wo die ..... sind.

Ja das ist eine Möglichkeit so wie du es unten geschrieben hast.
 
Schreib das nächste Mal noch mit in den Thread-Titel, um welche Sprache es sich handelt.
 
Naja, ist schon ein bischen getrickst :)
Du kopierst ja nicht wirklich etwas, du delegierst einfach die Arbeit zurück an die Klasse.

Was wäre wenn du eine Kopie irgendeines Objektes machen müsstest ? :)
Stichwort: Deepcopy
 
Zuletzt bearbeitet:
In die Klasse:

Code:
public Period_copy()
{
    return this;    
}

Period _kopie = new Period(0);
_kopie = _oldPeriodObject.Period_copy();

mfg,
Max
 
java klassen ahben immer eine clone() methode die eine kopie eines bjektes eruegt.. wenn du nicht diese methode benutzt, gibst du nur die referenz auf das objekt zurück und keine kopie des objektes.. heißt es ist das gleiche objekt das vll nen anderen namen hat.
 
Muss jetzt doch noch was schreiben, iwie nehmen hier komische Konstrukte überhand.

Java bietet das Interface Cloneable an. Dieses muss implementiert werden und die Methode clone überschrieben werden.

und den leeren else {;} Block könntest du dir sparen. Der bringt nichts
 
black90 schrieb:
Naja, ist schon ein bischen getrickst :)
Du kopierst ja nicht wirklich etwas, du delegierst einfach die Arbeit zurück an die Klasse.

Was völlig legitim ist. Der Typ bietet eine copy-Methode an, welche eine einwandfreie Kopie zurückliefert. In Sprachen, in denen man nur mit immutables arbeitet, erzeugt man oftmals auf diese Weise Kopien.

max_1234 schrieb:
In die Klasse:

Code:
public Period_copy()
{
    return this;    
}

Period _kopie = new Period(0);
_kopie = _oldPeriodObject.Period_copy();

Da wird nur die Referenz kopiert, genau das ist wahrscheinlich nicht gewünscht.

@kling1, thecain:

clone ist eine Möglichkeit, aber bringt altbekannte Probleme mit.

@kralex68

Von allem abgesehen ist deine zweite Period-Methode nichts als Redundanz. Du könntest den Aufruf einfach an die erste Methode delegieren (und für "stu" den Wert 0 übergeben).
 
Zurück
Oben