24.11.2013 Aufrufe

5 Objektorientiertes Design

5 Objektorientiertes Design

5 Objektorientiertes Design

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

60 3 <strong>Objektorientiertes</strong> <strong>Design</strong><br />

thoden zu arbeiten. Abbildung 3-1 zeigt dies für eine Referenzvariable myBrother, die<br />

auf ein Objekt vom Typ Person verweist und somit Zugriff auf dessen Attribute (hier<br />

name und age) sowie dessen (nicht dargestellte) Methoden erlaubt.<br />

Person myBrother =<br />

new Person();<br />

name = ...<br />

age = ...<br />

Abbildung 3-1 Objekterzeugung und -referenzierung<br />

Die folgende Abbildung 3-2 zeigt die Referenzierung desselben Objekts durch mehrere<br />

Referenzvariablen, hier myBrother und otherPerson.<br />

Person myBrother =<br />

new Person();<br />

name = ...<br />

age = ...<br />

Person otherPerson = myBrother;<br />

Abbildung 3-2 Mehrfache Referenzierung eines Objekts<br />

Bereits beim Betrachten ahnt man mögliche Auswirkungen von Änderungen: Nehmen<br />

wir an, dass etwa der Wert des Attributs name für das durch myBrother referenzierte<br />

Person-Objekt verändert wird. Das wirkt sich natürlich auch in dem durch other-<br />

Person referenzierten Objekt aus. Das ist in diesem Beispiel noch leicht verständlich,<br />

verweisen doch beide Referenzen auf dasselbe Objekt. In der Praxis sind die Beziehungsgeflechte<br />

zwischen Objekten oftmals komplexer, und somit lassen sich Referenzierungen<br />

und Auswirkungen von Änderungen an den Daten eines Objekts nicht immer<br />

so einfach nachvollziehen wie hier. Das werde ich später in Abschnitt 3.4.1 noch ausführlicher<br />

behandeln.<br />

Parameterübergabe per Call-by-Value / Call-by-Reference Beim Aufruf von<br />

Methoden existieren verschiedene Strategien, wie die Werte von Parametern übergeben<br />

werden. Man unterscheidet zwischen der Übergabe eines Werts (Call-by-Value) und der<br />

Übergabe per Referenz (Call-by-Reference). Entgegen der weitverbreiteten Meinung,<br />

in Java würden beide Arten der Parameterübergabe unterstützt, und zwar Call-by-Value<br />

für Parameter primitiver Typen und Call-by-Reference für Referenzparameter, wird tatsächlich<br />

in beiden Fällen Call-by-Value genutzt. 4<br />

4 Im Zusammenhang mit RMI (Remote Method Invocation) spricht man manchmal auch von<br />

Call-by-Value, wenn die referenzierten Daten tatsächlich vollständig als Kopie (sogenannte tiefe<br />

Kopie) übergeben werden. Dazu wird Serialisierung eingesetzt (vgl. Abschnitt 8.3).

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!