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 Beispielprojekte
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
Stichwort

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

Spacer
<< zurück
Einstieg in Visual Basic 2010 von Thomas Theis
Inkl. Visual Studio Express Editions
Buch: Einstieg in Visual Basic 2010

Einstieg in Visual Basic 2010
2., akt. und erw. Aufl., Klappbroschur, mit DVD
467 S., 24,90 Euro
Galileo Computing
ISBN 978-3-8362-1541-1
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 Vererbung
Pfeil 5.8 Konstruktoren bei Vererbung
Pfeil 5.9 Polymorphie
Pfeil 5.10 Schnittstellen
Pfeil 5.10.1 Vorhandene 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. Beachten Sie dabei allerdings, 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 (Variablen der Basis-Datentypen).

Es folgt ein Beispielprogramm (Projekt ReferenzenWerte), das diesen Unterschied verdeutlicht. Die Definition der Klasse ähnelt derjenigen im vorherigen Projekt Konstruktor, daher muss sie hier nicht mehr gesondert dargestellt werden.

Public Class Form1
    Private Sub cmdAnzeigen1_Click(...) Handles ...
        Dim vespa As New Fahrzeug("Moped", 50)
        Dim schwalbe As Fahrzeug
        schwalbe = vespa
        lblAnzeige.Text = vespa.ausgabe() & vbCrLf &
            schwalbe.ausgabe()
        vespa.beschleunigen(35)
        lblAnzeige.Text += vbCrLf & vbCrLf &
            vespa.ausgabe() & vbCrLf &
            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 & vbCrLf &
            "x: " & x & ", y: " & y
    End Sub
End Class

Listing 5.8 Projekt »ReferenzenWerte«, Teil 1

Zur Erläuterung:

  • Nach der Erzeugung eines Objekts (mit New) und eines Objektverweises (ohne New) der Klasse Fahrzeug erfolgt die Zuweisung des Objekts zum zweiten Objektverweis.
  • Damit sind schwalbe und vespa Verweise auf dasselbe Objekt. Wird vespa beschleunigt, so erfährt man auch über schwalbe diese Veränderung, siehe Abbildung 5.5.

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 Veränderung von x trifft dies nicht mehr zu, siehe Abbildung 5.6.

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.7 noch vertieft.

Mithilfe der Methode Equals() können Sie feststellen, ob Objekte gleich sind. Gleichheit bedeutet:

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

In der folgenden Erweiterung des Projekts ReferenzenWerte werden zwei Objektverweise miteinander verglichen:

Public Class Form1
[...]
    Private Sub cmdAnzeigen3_Click(...) Handles ...
        Dim vespa As New Fahrzeug("Roller", 35)
        Dim schwalbe As New Fahrzeug("Roller", 35)

        If vespa.Equals(schwalbe) Then
            MessageBox.Show("1: Die beiden Objekt" &
             "verweise zeigen auf dasselbe Objekt")
        Else
            MessageBox.Show("1: Die beiden Objekt" &
             "verweise zeigen nicht auf dasselbe Objekt")
        End If

        vespa = schwalbe

        If vespa.Equals(schwalbe) Then
            MessageBox.Show("2: Die beiden Objekt" &
             "verweise zeigen auf dasselbe Objekt")
        Else
            MessageBox.Show("2: Die beiden Objekt" &
             "verweise zeigen nicht auf dasselbe Objekt")
        End If
    End Sub
End Class

Listing 5.9 Projekt »ReferenzenWerte«, zwei Verweise vergleichen

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.

Überladen

Die Methode Equals() kann in einer abgeleiteten Klasse überladen werden. Damit ist sie mehrmals vorhanden. Sie kann nun auch dazu benutzt werden, um nach klassenspezifischen Merkmalen festzustellen, ob die Objekte gleich sind.

Zur Erläuterung dieses Verhaltens wird die Klasse Fahrzeug im Projekt ReferenzenWerte 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

Listing 5.10 Projekt »ReferenzenWerte«, Methode »Equals()«

Zur Erläuterung:

  • Die Funktion liefert True, wenn die Werte der beiden Eigenschaften bezeichnung und geschwindigkeit gleich sind.
  • Die Methode Equals() wird in dieser Klasse mithilfe des Schlüsselworts Overloads überladen, d. h. es gibt jetzt auch eine Methode Equals(), die als Parameter Objekte der Klasse Fahrzeug erfordert.

Das folgende Beispielprogramm (ebenfalls im Projekt ReferenzenWerte) verwendet die veränderte Klasse Fahrzeug:

Public Class Form1
[...]
    Private Sub cmdAnzeigen4_Click(...) Handles ...
        Dim vespa As New Fahrzeug("Roller", 35)
        Dim schwalbe As New Fahrzeug("Roller", 35)

        If vespa.Equals(schwalbe) Then
            MessageBox.Show("Die beiden Objekte" &
             " sind gleich")
        Else
            MessageBox.Show("Die beiden Objekte" &
             " sind nicht gleich")
        End If
    End Sub
End Class

Listing 5.11 Projekt »ReferenzenWerte«, Nutzung der Methode »Equals()«

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 2010

Einstieg in Visual Basic 2010
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Visual Basic 2010






 Visual Basic 2010


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Silverlight 4






 Silverlight 4


Zum Katalog: Einstieg in Visual C# 2010






 Einstieg in
 Visual C# 2010


Zum Katalog: Visual C# 2010






 Visual C# 2010


Zum Katalog: Einstieg in PHP 5.3 und MySQL 5.4






 Einstieg in PHP 5.3
 und MySQL 5.4


Zum Katalog: PHP 5.3 und MySQL 5.4






 PHP 5.3 und
 MySQL 5.4


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2010
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