Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Neues in Visual Basic 2008
12 Beispielprojekte
A Installation
B Lösungen der Übungsaufgaben
Stichwort

Download:
- ZIP, ca. 8,4 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Einstieg in Visual Basic 2008 von Thomas Theis
Inkl. zahlreicher Beispiele und Uebungen
Buch: Einstieg in Visual Basic 2008

Einstieg in Visual Basic 2008
geb., mit DVD
442 S., 24,90 Euro
Galileo Computing
ISBN 978-3-8362-1192-5
Online bestellenJetzt online bestellen
* versandkostenfrei in (D) und (A)
Pfeil 5 Objektorientierte Programmierung
  Pfeil 5.1 Was ist Objektorientierung?
  Pfeil 5.2 Klasse, Eigenschaft, Methode, Objekt
    Pfeil 5.2.1 Objektverweis und Instanz
  Pfeil 5.3 Eigenschaftsmethode
  Pfeil 5.4 Konstruktor
  Pfeil 5.5 Referenzen und Werte
    Pfeil 5.5.1 Objekte vergleichen
  Pfeil 5.6 Statische Elemente
  Pfeil 5.7 Delegates
  Pfeil 5.8 Ereignisse
  Pfeil 5.9 Namespaces
  Pfeil 5.10 Vererbung
  Pfeil 5.11 Konstruktoren bei Vererbung
  Pfeil 5.12 Polymorphie
  Pfeil 5.13 Schnittstellen


Galileo Computing - Zum Seitenanfang

5.5 Referenzen und Werte  Zur nächsten ÜberschriftZur vorigen Überschrift

Objektverweis

Mithilfe einer Zuweisung kann einem Objektverweis A ein gleichartiger Objektverweis B zugewiesen werden. Dabei ist allerdings zu beachten, dass nicht das Objekt, sondern nur eine Referenz (der Objektverweis) zugewiesen wurde. Die Objektverweise A und B verweisen nach der Zuweisung auf dasselbe Objekt. Falls im weiteren Verlauf des Programms eine Veränderung über einen der beiden Objektverweise vorgenommen wird, hat dies Auswirkungen auf dasselbe Objekt.

Referenztyp

Bei der Übergabe von Parametern an eine Prozedur oder Funktion haben wir bereits ein ähnliches Verhalten kennengelernt. Wenn ein Parameter mit ByRef übergeben wurde, dann hatte eine Änderung Auswirkungen auf die Original-Variable. Dieser Vorgang wurde daher auch als »Übergabe per Referenz« bezeichnet.

Werttyp

Anders verhält es sich bekanntlich bei der Zuweisung einer Variablen eines Basis-Datentyps (z. B. Integer oder Double). Nach der Zuweisung einer Variablen A an eine Variable B haben zwar beide zunächst den gleichen Wert. Es handelt sich aber um zwei verschiedene Variablen, die im weiteren Verlauf des Programms unabhängig voneinander agieren können.

Bezüglich dieses Verhaltens spricht man auch von Referenztypen (Objekte) und Werttypen (der Basis-Datentypen).

Es folgt ein Beispielprogramm (p0504), das diesen Unterschied verdeutlicht. Es basiert auf der gleichen Klasse wie das vorherige Programm zum Thema Konstruktor, daher muss die Klasse nicht mehr gesondert dargestellt werden.

Public Class frm0504 
   Private Sub cmdAnzeigen1_Click( ... ) Handles ... 
      Dim vespa As New Fahrzeug("Moped", 50) 
      Dim schwalbe As New Fahrzeug 
      schwalbe = vespa 
      vespa.beschleunigen(35) 
      lblAnzeige.Text = schwalbe.ausgabe() 
   End Sub 
 
   Private Sub cmdAnzeigen2_Click( ... ) Handles ... 
        Dim x As Integer = 12 
        Dim y As Integer 
        y = x 
        lblAnzeige.Text = "x: " & x & ", y: " & y 
        x = 25 
        lblAnzeige.Text &= vbCrLf & "x: " & x _ 
           & ", y: " & y 
   End Sub 
End Class

Zur Erläuterung:

  • Nach der Erzeugung zweier Objekte der Klasse Fahrzeug erfolgt eine Zuweisung des ersten Objekts zum zweiten Objektverweis.
  • Damit sind schwalbe und vespa Verweise auf dasselbe Objekt. Wird die Vespa »beschleunigt«, so erfährt auch das Objekt, das über schwalbe angesprochen wird, diese Veränderung.

    Abbildung 5.5  Zwei Verweise auf ein Objekt

  • Im Gegensatz dazu zeigt die Prozedur mit den beiden Integer-Variablen ein anderes Verhalten. Kurzfristig haben x und y den gleichen Wert. Nach einer weiteren Veränderung von x trifft dies nicht mehr zu.

Abbildung 5.6  Zwei verschiedene Variablen


Galileo Computing - Zum Seitenanfang

5.5.1 Objekte vergleichen  topZur vorigen Überschrift

Equals

In diesem Zusammenhang ist auch die Methode Equals() der Basisklasse Object von Interesse. Diese Methode erbt jede Klasse, weil jede Klasse von der Basisklasse Object abgeleitet wird. Das Thema »Vererbung« wird im Abschnitt 5.10 noch vertieft.

Mithilfe der Methode Equals() kann man feststellen, ob Objekte gleich sind. Gleichheit bedeutet:

  • bei Referenztypen, dass beide auf dasselbe Objekt verweisen,
  • bei Werttypen, dass sie den gleichen Wert haben.

Das folgende Beispielprogramm (ebenfalls in p0504) verwendet die gleiche Klasse Fahrzeug:

Public Class frm0504 
[ ... ] 
   Private Sub cmdAnzeigen3_Click( ... ) Handles ... 
      Dim vespa As New Fahrzeug("Roller", 35) 
      Dim schwalbe As New Fahrzeug("Roller", 35) 
 
      If vespa.Equals(schwalbe) Then 
         MsgBox("1: Die beiden Objektverweise zeigen " _ 
            & "auf dasselbe Objekt") 
      Else 
         MsgBox("1: Die beiden Objektverweise zeigen " _ 
            & "nicht auf dasselbe Objekt") 
      End If 
 
      vespa = schwalbe 
 
      If vespa.Equals(schwalbe) Then 
         MsgBox("2: Die beiden Objektverweise zeigen " _ 
            & "auf dasselbe Objekt") 
      Else 
         MsgBox("2: Die beiden Objektverweise zeigen " _ 
            & "nicht auf dasselbe Objekt") 
      End If 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

  • Die beiden Objekte der Klasse Fahrzeug werden mit identischen Werten erzeugt.
  • Auf das Objekt vespa wird die geerbte Methode Equals() angewendet. Als Parameter wird der Objektverweis auf das andere Objekt übergeben. Die beiden Objekte haben zwar die gleichen Werte, aber die Methode Equals() liefert dennoch False, da die Objektverweise nicht auf dasselbe Objekt verweisen.
  • Anschließend erfolgt die Zuweisung vespa = schwalbe.
  • Nun verweisen beide auf dasselbe Objekt. Equals() liefert True.

Überschreiben

Die Methode Equals() kann in einer abgeleiteten Klasse überschrieben werden. Sie kann dann benutzt werden, um nach klassenspezifischen Merkmalen festzustellen, ob die Objekte gleich sind.

Dazu wird im folgenden Beispiel zunächst die Klasse Fahrzeug wie folgt ergänzt:

Public Class Fahrzeug 
[ ... ] 
   Overloads Function Equals(ByVal x As Fahrzeug) As Boolean 
      If bezeichnung = x.bezeichnung _ 
            And geschwindigkeit = x.geschwindigkeit Then 
         Equals = True 
      Else 
          Equals = False 
      End If 
   End Function 
End Class

Zur Erläuterung:

  • Die Funktion liefert True, wenn die Werte der beiden Eigenschaften bezeichnung und geschwindigkeit gleich sind.
  • Mehr zum Schlüsselwort Overloads folgt im Abschnitt über Vererbung.

Das folgende Beispielprogramm (ebenfalls in p0504) verwendet die veränderte Klasse Fahrzeug:

Public Class frm0504 
[ ... ] 
   Private Sub cmdAnzeigen4_Click( ... ) Handles ... 
      Dim vespa As New Fahrzeug("Roller", 35) 
      Dim schwalbe As New Fahrzeug("Roller", 35) 
      If vespa.Equals(schwalbe) Then 
         MsgBox("Die beiden Objekte sind gleich") 
      Else 
         MsgBox("Die beiden Objekte sind nicht gleich") 
     End If 
   End Sub 
End Class

Zur Erläuterung:

  • Beim Vergleich wird nun die eigene Methode Equals() der Klasse Fahrzeug aufgerufen.
  • Es werden die Werte der Eigenschaften verglichen. Diese sind gleich, also liefert die Methode Equals() den Wert True.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  Zum Katalog
Zum Katalog: Einstieg in Visual Basic 2008






Einstieg in Visual Basic 2008
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Visual Basic 2008






 Visual Basic 2008


Zum Katalog: Einstieg in Visual C++ 2008






 Einstieg in
 Visual C++ 2008


Zum Katalog: Einstieg in Visual C# 2008






 Einstieg in
 Visual C# 2008


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: Visual C# - Video-Training






 Visual C# -
 Video-Training


Zum Katalog: Einstieg in PHP 5 und MySQL 5






 Einstieg in PHP 5
 und MySQL 5


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de