Kopie oder Referenz ?

C

Carcharoth

Aktives Mitglied
Hallo

Ich habe eine Klasse Graph welche manchmal grosse Datenmengen halten kann.
Eine Klasse GrafischeDarstellung benötigt Zugriff auf diese Daten. Ich gebe also ein Graph als Parameter über den Konstruktor von GrafischeDarstellung weiter.

Java:
public class GrafischeDarstellung {
    Graph graph;
    
    GrafischeDarstellung(Graph graph) {
        this.graph=graph;
    }
}

Frage 1: macht das Sinn der Klasse GrafischeDarstellung so den Zugriff auf die Daten von Graph zu geben oder gibt es einen besseren Weg?
Frage 2: wird in einer Instanz von GrafischeDarstellung jeweils eine Kopie oder eine Referenz auf die jeweilige Instanz von Graph gemacht? Spielt aus meiner Sicht eine Rolle für den Speicherplatz.

Danke und Gruss
 
kneitzel

kneitzel

Top Contributor
Ja, das ist der richtige Weg und es wird nur eine Referenz weiter gegeben.

Das kannst du auch testen, indem du z.B. Daten veränderst im Graphen - die Änderungen siehst du über beide Referenzen.
 
C

Carcharoth

Aktives Mitglied
OK, danke.

Zusatzfrage: wie würde ich es anstellen, damit effektiv eine Kopie erstellt wird? Müsste ich im Konstruktor von GrafischeDarstellung die Kopie des Parameters erstellen und dann dem Feld "graph" in GrafischerDarstellung zuweisen? so was wie :

Java:
public class GrafischeDarstellung {
    Graph graph;
    
    GrafischeDarstellung(Graph graph) {
        this.graph=graph.kopieren();
    }
}

(Methode kopieren würde ich in der Klasse Graph implementieren)
 
W

White_Fox

Top Contributor
Ich würde sagen es kommt darauf an. Wenn du z.B. auf keinen Fall willst, daß 'GraphischeDarstellung' in 'Graph' irgendwelche Änderungen vornehmen kann, würde ich es nicht so machen.
Dann würde ich 'Graph' ein Interface 'DataPresentationer' mitgeben, das ausschließlich Lesemethoden enthält. Eine andere Möglichkeit wäre, daß 'Graph' auf Anfrage von 'GraphischeDarstellung' ein 'GraphModel' mit den enthaltenen Daten liefert.
 
kneitzel

kneitzel

Top Contributor
Also eine Kopie müsstest Du selbst erzeuge. Dein Ansatz mit der Methode ist also vom Prinzip her richtig. Die Methode, die man da oft findet, ist clone() und es gibt auch ein Interface Clonable. Das ist aber ein Ansatz, der so eher unüblich ist, da dies im Bereich der Vererbung zu Problemen führen kann.

Die Implementierung, die daher gebräuchlicher ist, ist ein "Copy Constructor", also ein Konstruktor in Graph, der einen Graph als Parameter nimmt.

So wie @White_Fox aber auch schon etwas ausgeführt hat, sollte man überlegen, ob man dies wirklich benötigt.
 
C

Carcharoth

Aktives Mitglied
Danke euch beiden. Habe nun Futter um weiter zu experimentieren.
Gruss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
P Objekte als Attribut: Referenz oder Kopie? Java Basics - Anfänger-Themen 3
G Parameterübergabe als Referenz bzw. als Kopie Java Basics - Anfänger-Themen 4
G Rückgabe einer Kopie bzw. Referenz Java Basics - Anfänger-Themen 22
L Referenz vs. Kopie Java Basics - Anfänger-Themen 2
L Tiefe Kopie einer Zeile eines zweidimensionalen Arrays Java Basics - Anfänger-Themen 1
X Kopierkonstruktor / tiefe Kopie Java Basics - Anfänger-Themen 3
V Tiefe Kopie Java Basics - Anfänger-Themen 3
Furtano OOP Memento Pattern | übergabe einer Kopie des Arrays Java Basics - Anfänger-Themen 0
S Klassen Tiefe Kopie mittels Kopierkonstruktor Java Basics - Anfänger-Themen 6
GianaSisters ArrayList-Kopie verändert Original Java Basics - Anfänger-Themen 5
P Kopie erstellen / addieren von Arrays Java Basics - Anfänger-Themen 5
D Tiefen Kopie Java Basics - Anfänger-Themen 36
? clonen -tiefe Kopie Java Basics - Anfänger-Themen 6
N Kopie eines Objektes, die Objekt beeinflusst? Java Basics - Anfänger-Themen 6
S Array Kopie zwei in eindimensionales feld Java Basics - Anfänger-Themen 4
F 1:1 kopie möglichst effektiv und schnell Java Basics - Anfänger-Themen 7
M Kopie eines Objektes Java Basics - Anfänger-Themen 8
C Kopie einer ArrayList: Fehler im Detail? Java Basics - Anfänger-Themen 2
R Kopie erzeugen Java Basics - Anfänger-Themen 2
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
Y Pointer / Referenz - Theorie Java Basics - Anfänger-Themen 3
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
D Uebergabe per Referenz Java Basics - Anfänger-Themen 2
O Referenz - toString Java Basics - Anfänger-Themen 9
S This-Referenz Java Basics - Anfänger-Themen 6
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
I Referenz auf Klasse als Rückgabewert Java Basics - Anfänger-Themen 7
J Referenz und Instanzierung Java Basics - Anfänger-Themen 25
I Erste Schritte Referenz zum Knoten davor, in einer Liste Java Basics - Anfänger-Themen 4
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
8 Referenz (Pointer, Zeiger) in Java Java Basics - Anfänger-Themen 9
O This-Referenz als Returnwert einer Methode? Java Basics - Anfänger-Themen 13
O This Referenz Java Basics - Anfänger-Themen 3
A top referenz bei queues Java Basics - Anfänger-Themen 1
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
Q Parameterübergabe - Objekt - Referenz Java Basics - Anfänger-Themen 5
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
V Frage zu Polymorphismus: Objekt der Subklasse in Referenz der Oberklasse Java Basics - Anfänger-Themen 4
T Aufgerufene Methode Inhalt der übergebenen Referenz Java Basics - Anfänger-Themen 5
B Referenz in Java Java Basics - Anfänger-Themen 5
C Referenz auf ein Objekt kopieren! Java Basics - Anfänger-Themen 2
J Methoden Referenz und Speicherplatz für Objekte reservieren Java Basics - Anfänger-Themen 2
M Wie komm ich an die Referenz eines Oberflächenelements Java Basics - Anfänger-Themen 2
A Klassenvariablen Referenz auf ein Objekt Java Basics - Anfänger-Themen 18
M Referenz Frage Java Basics - Anfänger-Themen 12
K OOP Probleme mit Objekt-Referenz in Methode Java Basics - Anfänger-Themen 6
W Die leidige Referenz-Frage Java Basics - Anfänger-Themen 9
B Arraycopy kopiert nur die Referenz?! Java Basics - Anfänger-Themen 3
S Speicheradresse auf die eine Referenz zeigt ausgeben Java Basics - Anfänger-Themen 12
E Compiler-Fehler kann Objekt-Referenz nicht erstellen Java Basics - Anfänger-Themen 3
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
Blackskyliner Referenz ähnlicher Zugriff, aber wie? Java Basics - Anfänger-Themen 4
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
C Referenz einer bereits instanziierten Klasse während des Programmablaufs Java Basics - Anfänger-Themen 16
H Objekt holen per Referenz als String. Java Basics - Anfänger-Themen 4
T Referenz einer Variable übergeben Java Basics - Anfänger-Themen 3
S Datentypen Objekt Integer Referenz Java Basics - Anfänger-Themen 5
B Referenz auf Referenz Java Basics - Anfänger-Themen 3
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
H ArrayList Zugriffe per Referenz verkürzen? Java Basics - Anfänger-Themen 9
B Static Referenz auf Non-static Feld Java Basics - Anfänger-Themen 6
Luk10 Sinn von Instanzierung ohne Referenz Java Basics - Anfänger-Themen 7
C0FFEE Referenz auf Methode übergeben Java Basics - Anfänger-Themen 2
aze NullpointerException :Null Referenz anzeigen lassen Java Basics - Anfänger-Themen 2
D Fehlen einer Referenz auf Objekt Java Basics - Anfänger-Themen 14
N this.referenz erläuterung Java Basics - Anfänger-Themen 2
K Attribut als Referenz auf Objekt Java Basics - Anfänger-Themen 8
K 3 Threads bearbeiten 1 Referenz: Ich versteh's nicht... Java Basics - Anfänger-Themen 2
P OOP-Theorie-Frage: Referenz auf Objekt Java Basics - Anfänger-Themen 27
D Referenz auf Objekt Java Basics - Anfänger-Themen 5
P Methode BigInteger-Array übergeben als Referenz Java Basics - Anfänger-Themen 6
U null-referenz Java Basics - Anfänger-Themen 26
deetee Problem mit Referenz auf Map Java Basics - Anfänger-Themen 5
G Interface referenz probleme Java Basics - Anfänger-Themen 10
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
D enum und Referenz der umgebenden Klasse Java Basics - Anfänger-Themen 2
C Referenz Java Basics - Anfänger-Themen 11
A ClassNotFoundException: Referenz nicht aktualisiert Java Basics - Anfänger-Themen 2
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
T Die this Referenz Java Basics - Anfänger-Themen 21
C Größe einer Referenz ? Java Basics - Anfänger-Themen 16
D Array reverse Problem, da Referenz nicht auf tmpArray zeigt Java Basics - Anfänger-Themen 4
G primitive Datentypen als Referenz an eine Methode übergeben Java Basics - Anfänger-Themen 2
G Wie Referenz auf Objekt übergebn Java Basics - Anfänger-Themen 8
S Prüfen, ob null Referenz? Java Basics - Anfänger-Themen 2
G Referenz-Problem Java Basics - Anfänger-Themen 3
J Referenz problem Java Basics - Anfänger-Themen 12
D tiefergehende Java-Referenz Java Basics - Anfänger-Themen 3
M Referenz auf Membervariable Java Basics - Anfänger-Themen 5
G Objektübergabe als Referenz bei RMI Java Basics - Anfänger-Themen 2
J referenz auf noch nicht erzeugte objekte? Java Basics - Anfänger-Themen 2
M Parameter als Referenz übergeben Java Basics - Anfänger-Themen 5
F Referenz Pointer oder doch nochmal neu suchen ? Java Basics - Anfänger-Themen 2
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
K Referenz auf Funktion Java Basics - Anfänger-Themen 6
J Referenz auf ein Objekt Java Basics - Anfänger-Themen 2
javasdann Referenz als String ausgeben. Java Basics - Anfänger-Themen 10
B Was ist eine Referenz? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben