Rheinwerk Computing < openbook > Rheinwerk 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
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
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, Vergleiche und Typen
Pfeil 5.5.1 Objekte vergleichen
Pfeil 5.5.2 Typ eines Objekts ermitteln
Pfeil 5.5.3 Typ eines Objekts durch Vergleich ermitteln
Pfeil 5.6 Delegates
Pfeil 5.7 Statische Elemente
Pfeil 5.8 Vererbung
Pfeil 5.9 Konstruktoren bei Vererbung
Pfeil 5.10 Polymorphie
Pfeil 5.11 Schnittstellen
Pfeil 5.11.1 Vorhandene Schnittstellen

Rheinwerk Computing - Zum Seitenanfang

5.5 Referenzen, Vergleiche und TypenZur nächsten Überschrift

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.

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.

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).

Mithilfe des Operators Is können Sie feststellen, ob zwei Objektverweise auf dasselbe Objekt verweisen.

Es folgt ein Beispielprogramm (Projekt ReferenzenVergleicheTypen), das diese Zusammenhänge 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 cmdReferenzZuweisen_Click(...) Handles ...
Dim vespa As New Fahrzeug("Moped", 50)
Dim schwalbe As Fahrzeug
schwalbe = vespa
MessageBox.Show(vespa.ausgabe() &
" / " & schwalbe.ausgabe())
vespa.beschleunigen(35)
MessageBox.Show(vespa.ausgabe() &
" / " & schwalbe.ausgabe())
End Sub

Private Sub cmdReferenzenVergleichen_Click(
...) Handles ...
Dim vespa As New Fahrzeug("Roller", 35)
Dim schwalbe As New Fahrzeug("Roller", 35)

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

Listing 5.8 Projekt »ReferenzenVergleicheTypen«, 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

Abbildung 5.5 Zwei Verweise auf ein Objekt

  • In der zweiten Prozedur werden zwei Objekte mit denselben Eigenschaftswerten erzeugt. Der Vergleich mithilfe des Operators Is zeigt, dass es sich aber nicht um dasselbe Objekt handelt, siehe Abbildung 5.6.

Abbildung

Abbildung 5.6 Zwei verschiedene Objekte


Rheinwerk Computing - Zum Seitenanfang

5.5.1 Objekte vergleichenZur nächsten ÜberschriftZur vorigen Überschrift

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

Falls Sie die geerbte Methode Equals() auf zwei Objektverweise einer Klasse anwenden, dann wird damit festgestellt, ob die Verweise auf dasselbe Objekt verweisen. Es handelt sich also um das gleiche Verhalten wie beim Operator Is.

Die Methode Equals() ist aber eigentlich dazu vorgesehen, festzustellen, ob zwei Objekte identisch sind. Dazu muss sie in der betreffenden Klasse überschrieben werden.

Dazu wird die Klasse Fahrzeug im Projekt ReferenzenVergleicheTypen wie folgt ergänzt:

Public Class Fahrzeug
[ ... ]
Overloads Function Equals(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.9 Projekt »ReferenzenVergleicheTypen«, Methode »Equals()«

Zur Erläuterung:

  • Die Funktion liefert True, wenn die Werte der beiden Eigenschaften bezeichnung und geschwindigkeit gleich sind.

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

Public Class Form1
[...]
Private Sub cmdObjekteVergleichen_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.10 Projekt »ReferenzenVergleicheTypen«, 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.

Rheinwerk Computing - Zum Seitenanfang

5.5.2 Typ eines Objekts ermittelnZur nächsten ÜberschriftZur vorigen Überschrift

Die Methode GetType() der Basisklasse Object liefert die Bezeichnung des Typs, also der Klasse eines Objekts. Diese Bezeichnung kann mithilfe der Methode ToString() ausgegeben werden. Das folgende Beispielprogramm (ebenfalls im Projekt ReferenzenVergleicheTypen) zeigt dies:

Private Sub cmdKlasseErmitteln_Click(...) Handles ...
Dim vespa As New Fahrzeug("Roller", 35)
Dim schwalbe As Fahrzeug

MessageBox.Show("Objekt vespa ist vom Typ " &
vespa.GetType().ToString)
If Not schwalbe Is Nothing Then
MessageBox.Show("Objekt schwalbe ist vom Typ " &
schwalbe.GetType().ToString)
End If

MessageBox.Show("Der Button ist vom Typ " &
cmdKlasseErmitteln.GetType().ToString)
End Sub

Listing 5.11 Projekt ReferenzenVergleicheTypen, Typ ermitteln

Zur Erläuterung:

  • Es wird das Objekt vespa vom Typ Fahrzeug erzeugt. Die Methode GetType() liefert dann die Bezeichnung ReferenzenVergleicheTypen.Fahrzeug, also den Namen der eigenen Klasse Fahrzeug innerhalb des Namensraums des Projekts.
  • Es wird der Objektverweis schwalbe erzeugt. Dieser verweist auf kein Objekt, also kann GetType() nicht angewendet werden. Der Verweis Nothing ist ein Verweis auf »Nichts«. Is Nothing stellt fest, ob der betreffende Verweis auf nichts verweist. Not Is Nothing ist die Umkehrung. Es stellt also fest, ob der betreffende Verweis auf »Etwas« verweist. Nur dann kann GetType() angewandt werden.
  • Die Methode GetType() liefert für den Button die Bezeichnung System.Windows.Forms.Button, also den Namen der Klasse Button innerhalb des Namensraums System.Windows.Forms.

Rheinwerk Computing - Zum Seitenanfang

5.5.3 Typ eines Objekts durch Vergleich ermittelnZur vorigen Überschrift

Falls Sie wissen möchten, ob ein Objekt von einem bestimmten Typ ist, so können Sie die Operatorenkombination TypeOf ... Is anwenden. Das folgende Beispielprogramm (ebenfalls im Projekt ReferenzenVergleicheTypen) zeigt dies:

Private Sub cmdKlasseVergleichen_Click(...) Handles ...
Dim vespa As New Fahrzeug("Roller", 35)
Dim schwalbe As Fahrzeug

If TypeOf vespa Is Fahrzeug Then
MessageBox.Show("Objekt vespa ist" &
" vom Typ Fahrzeug")
End If

If Not TypeOf schwalbe Is Fahrzeug Then
MessageBox.Show("Objekt schwalbe ist" &
" (noch) nicht vom Typ Fahrzeug")
End If
End Sub

Listing 5.12 Projekt ReferenzenVergleicheTypen, Typ durch Vergleich ermitteln

Zur Erläuterung:

  • Es wird das Objekt vespa vom Typ Fahrzeug erzeugt. TypeOf ... Is liefert dann True.
  • Umgekehrt verhält es sich beim Objektverweis schwalbe, der auf kein Objekt des Typs Fahrzeug verweist. TypeOf ... Is liefert dann False.


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern