i

Strukturierung - Zeiger / Referenz

Identität von Objekten

Christiano Ronaldo[1]

Weißt du, wer Cristiano Ronaldo ist?

Aber es gibt noch einen Christiano Ronaldo - seinen Sohn.

Obwohl zwei Eigenschaften dieser Menschen (der Vorname und der Nachname) übereinstimmen, sind es unterschiedliche Personen und sie lassen sich auch eindeutig identifizieren.

Aufgabe 1

(a) Mache Vorschläge, wie man Menschen eindeutig identifizieren kann, um nicht Christiano Ronaldo (den einen) und Christiano Ronaldo (den anderen) zu verwechseln.

(b) Auch bei Objekten im Computer kann es vorkommen, dass Attribute (sogar alle Attribute) übereinstimmen. Mache Vorschläge, wie man die Objekte dennoch eindeutig identifizieren kann.

Zum eindeutigen Identifizieren von Menschen kann man z.B. die Nummer auf dem Personalausweis verwenden. Eine andere Möglichkeit wäre die Wohnadresse, sofern sie genau genug ist (inklusive Wohnungs- oder Zimmernummer in Mehrfamilienhäusern).

Mit id erhält man die Identitätsnummer eines Software-Objektes. Eine sinnvolle Möglichkeit für so eine Nummer ist die Adresse des Objektes im Speicher.

Ein genauerer Blick auf Variablen

In der bisherigen Programmierung haben wir gelernt, dass Variablen Namen sind, die mit einem Wert verknüpft sind. Zum Beispiel bewirkt die Zuweisung zaehler = 5, dass der Name zaehler mit dem Wert 5 verknüpft wird. Beim Umgang mit Objekten ist das ganz ähnlich: Die Zuweisung k = Konto(6) bewirkt, dass danach der Name k mit einem (neu erstellten) Konto-Objekt verknüpft ist. Deshalb müssen wir die Frage, was eine Variable ist, nochmal genauer beantworten:

Eine Variable ist ein Name, der (in der Regel) mit einem Objekt verknüpft ist. Wenn eine Variable ein (Daten-) Objekt verwaltet, dann verwaltet sie die Speicheradresse (bzw. Identitätsnummer) dieses Objekts. Da die Speicheradresse auf das Objekt zeigt bzw. das Objekt referenziert, nennt man eine solche Adresse auch Zeiger bzw. Referenz und die Variable zur Verwaltung der Adresse Zeigervariable bzw. Referenzvariable.

Schematisch lässt sich eine solche Referenzsituation wie folgt darstellen:

Referenz

Hier verwaltet die Variable k ein Objekt der Klasse Konto mit Hilfe eines Zeigers bzw. einer Referenz. Dieser Zeiger steht für ein bestimmtes Bitmuster, das die Adresse des Objekts im Speicher darstellt. Die Schreibweise :Konto soll andeuten, dass das verwaltete Objekt ein Objekt der Klasse Konto ist.

Eine Analogie: Webseiten

Das Konzept von Zeigervariablen und Objekten kann man mit Hyperlinks und Webseiten vergleichen. So wie die Zeigervariablen auf Objekte zeigen, zeigen Hyperlinks auf Webseiten.

Aufgabe 2

Erkläre diese Analogie. Nutze dafür die folgenden Situationsbeschreibungen vom Umgang mit Zeigervariablen und Objekten und ordne passende Situationen im Umgang mit Hyperlinks und Webseiten zu:

  • Mehrere Zeigervariablen können auf dasselbe Objekt verweisen.
  • Es kann mehrere Objekte geben, die zwar gleiche Attributwerte aufweisen, aber unterschiedliche Objekte darstellen.
  • Wenn ich ein Objekt verändere, auf das mehrere Zeigervariablen zeigen, dann ist das Objekt danach geändert – egal, welche Zeigervariable man verwendet.

Zuweisungen bei Zeigervariablen

Es ist sehr wichtig, zu verstehen, wie Zuweisungen bei Zeigervariablen funktionieren.

Aufgabe 3

Quelle: LearningApps

Das Wichtigste notieren

Aufgabe 4

Fülle den folgenden Wissensspeicher aus.

Suche

v
7.2.3.4.2
dev.inf-schule.de/oop/python/bank/verwaltungobjekte/strukturierung_referenz
dev.inf-schule.de/7.2.3.4.2
dev.inf-schule.de/@/page/FmRYSehfFUfuymJK

Rückmeldung geben