75
VB.NET- Klassen und Objekte

VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Embed Size (px)

Citation preview

Page 1: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

VB.NET- Klassen und Objekte

Page 2: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 2

Zusammenfassung in ein Modul

Prozedurale Programmierung

Algorithmus "Taschenrechner"

Subtraktion Addition Multiplikation Division Main

Prozedurale Programmierung: Das Problem wird in viele verschiedene Teilaufgaben (Funktionen) zerlegt.

Anweisung 1Anweisung 2...Anweisung n

Daten

Page 3: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 3

Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen

werden. In jeder Prozedur stehen Anweisungen,

... die lokal Daten lesen oder verändern können. ... die übergebene Parameter weiterverarbeiten können. ... die Daten als Rückgabewert bereitstellen.

In der prozeduralen Programmierung sind die Daten unabhängig von den Funktionen.

Jede Anweisung kann gültige Daten verändern oder nur lesen. Falls globale Daten verändert werden, können die Folgen für das

Programm nicht abgeschätzt werden.

Page 4: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 4

Objektorientierte Programmierung ... abstrahiert Gegenstände der realen Welt, um sie in einem Programm

abzubilden zu können. ... versucht Daten, die ein Objekt beschreiben und Prozeduren, die die

Daten verändern, in einer Struktur zusammenzufassen. ... versucht Daten und Funktionen, die die Daten verändern, in eine

Struktur zu kapseln.

Page 5: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 5

Nutzung ... von Objekten.

Gegenstand in der realen Welt. Beschreibung durch seine Eigenschaften. Ein Textfeld arbeitet mit einer roten Schrift auf grauen Hintergrund.

... von Klassen. Baupläne für eine bestimmte Kategorie von Objekten. Beschreibung von bestimmten Arten. Welche Eigenschaften und Funktionen hat ein Textfeld?

... von Nachrichten. Kommunikation zwischen Objekt und Benutzer. Reaktion auf eine Aktion des Benutzers. Auslösung eines Ereignisses. Der Benutzer gibt ein Zeichen in das Textfeld ein.

Page 6: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 6

Objekte ... stellen eine Abstraktion eines realen Gegenstandes dar. ... sind Akteure in einem abstrakten Modell. Windows Forms sind zum Beispiel Objekte. ... haben bestimmte Eigenschaften (Attribute) und Methoden

(Funktionen). ... berichten über ihren Zustand und können diesen mit Hilfe von

Anweisungen verändern. ... kommunizieren mit anderen Objekten.

Der Nutzer der Schnittstelle kennt nicht deren Implementierung. Dem Nutzer genügt es zu wissen, wie die Schnittstelle aufgerufen

werden muss und welche Form von Antwort sie gibt.

Page 7: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 7

Beispiel

Das Objekt Auto hat Eigenschaften wie Farbe, Motorleistung etc.

... und kommuniziert mit anderen Verkehrsteilnehmern.

... und reagiert auf die Verkehrszeichen.

Page 8: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 8

Klassen ... fassen Objekte in Kategorien zusammen. ... fassen Objekte mit den gleichen Eigenschaften und Methoden

zusammen. ... stellen Baupläne für konkrete Objekte dar. ... bieten eine Schablone für eine bestimmte Kategorie von Objekten an.

Page 9: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 9

Eigenschaften (Attribute) einer Klasse ... beschreiben einen Gegenstand. ... sind statische Werte, die ein Objekt kennzeichnen. Jeder Gegenstand in einer Gruppe (Klasse) besitzt die gleichen

Eigenschaften. Jedes Objekt hat aber Attributwerte, die das Objekt von allen anderen

unterscheidet.

Page 10: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 10

Methoden (Memberfunction) einer Klasse ... verändern die Eigenschaft eines Objekts. Jedes Objekt in einer Gruppe (Klasse) hat die gleichen Methoden. Objekte nutzen Methoden, um mit anderen Objekten zu kommunizieren. Objekte nutzt Methoden, um seine Attributwerte zu verändern.

Page 11: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 11

Objektvariable deklarierenDim strText As System.Text.StringBuilder Es wird ein Verweis auf ein bestimmtes Objekt definiert. Mit Hilfe von As Object wird ein Verweis auf ein beliebiges Objekt

erzeugt. Mit Hilfe von As System.Text.StringBuilder wird ein Verweis auf eine

bestimmte Klasse von Objekten definiert. Die Variable kann nur auf ein Objekt der angegebenen Klasse verweisen.

Die Variable hat zu Anfang den Wert Nothing. Die Variable verweist auf kein Objekt.

Es wird Platz für das Objekt reserviert. Das Objekt selber existiert aber noch nicht.

Page 12: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 12

Objekt (Instanz) erstellenstrText = New System.Text.StringBuilder() Alle Methoden und Eigenschaften des Objekts werden im Speicher

reserviert. Die Objektvariable verweist auf die Speicheradresse, an der das Objekt

abgelegt ist. Falls die Objektvariable nicht mehr benötigt wird, sollten Sie der

Variablen den Wert Nothing zuweisen.

Page 13: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 13

Deklaration und Erstellung zusammenfassenDim strText As New System.Text.StringBuilder("Eisbären essen Fisch") Es wird eine Objektvariable erstellt. Gleichzeitig wird mit Hilfe des Schlüsselwortes New ein Objekt erzeugt.

Objekte können nicht mit Hilfe des Zuweisungsoperator initialisiert werden.

Das neu erstellte Objekt wird durch den Text in den runden Klammern automatisch initialisiert.

Page 14: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 14

Eigenschaften ... beschreiben den aktuellen Zustand eines Objekts. ... beschreiben das Aussehen eines Objekts. ... können immer gelesen werden. Einige Eigenschaften können auch

verändert werden. ... werden mit einem Punkt von der Objektvariablen getrennt. ... können genauso wie andere Variablen genutzt werden.

Sub Main() Dim strText As System.Text.StringBuilder Dim laenge As Integer

strText = New System.Text.StringBuilder("Text.") laenge = strText.Length

End Sub

Page 15: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 15

Methoden Memberfunktion, Elementfunktion ... verändern oder lesen Attribute des dazugehörigen Objekts. Die zu implementierenden Methoden ergeben sich aus den Attributen

einer Klasse und deren Nutzung. ... sind Prozeduren, die an ein Objekt gebunden sind. Die Gesamtheit aller Methoden kann als Schnittstelle (Interface) nach

außen bezeichnet werden. ... ermöglichen die Kommunikation mit anderen Objekten. Als Trennzeichen zwischen der Objektvariablen und der Methode wird

ein Punkt genutzt.

Page 16: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 16

Beispiel

Sub Main() Dim strText As System.Text.StringBuilder Dim laenge As Integer

strText = New System.Text.StringBuilder("Eisbären ")

strText.Append(" essen Fisch.")

laenge = strText.Length strText.Insert(laenge - 1, " und leben im Wasser.")

strText.Replace(" ", " ") Console.WriteLine(strText)

End Sub

Page 17: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 17

Die Klasse Fahrzeuge

Eigenschaften

FarbeGeschwindigkeitAntriebsartKM-StandPersonenLadung

Methoden

BeschleunigenBremsenTanken

Page 18: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 18

Klassen in Textbeschreibungen Klassen entsprechen Substantiven in einer Projektbeschreibung.

Das Konto wird für den Inhaber xyz von der Bank a eröffnet. Das Auto HI hat den Besitzer xyz. Mitarbeiter Müller arbeitet an den Projekt Ausschreibung. Die Bestellung wird über einen Laserdrucker xyz ausgedruckt. Außendienstmitarbeiter Meier betreut Kunden im Bezirk Unterweser.

Die konkreten Objekte werden durch die Programmierung abstrahiert. Redundante oder für die Aufgabenstellung unnötige Klassen werden

nicht implementiert.

Page 19: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 19

Klassen in VB

Class Fahrzeug

End Class

Module Bewegung

Sub Main() Dim myFahrzeug As Fahrzeug

myFahrzeug = New Fahrzeug End Sub

End Module

Page 20: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 20

Hinweise Eine Klasse steht immer außerhalb eines Moduls. Eine Klasse kann mit Hilfe von Projekt – Klasse hinzufügen in einer

eigenen Datei innerhalb des Projekts gespeichert werden. Der Rahmen wird automatisch in der Datei eingefügt.

Der Klassenname ... sollte mit einem Großbuchstaben beginnen. ... hat häufig das Präfix cls für Class.

Page 21: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 21

Zugriff auf eine Klasse Standardmäßig hat eine Klasse den Modifizierer Friend. Die Klasse ist

im Projekt sichtbar, in dem sie definiert ist. Die Klasse ist aber nicht für andere Projekte sichtbar.

Mit Hilfe des Modifizierer Public wird die Klasse in allen Projekten sichtbar.

Page 22: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 22

Eigenschaften (Attribute) einer Klasse ... beschreiben die Merkmale eines Gegenstandes. ... beschreiben einen bestimmten Zustand. ... besitzen für jedes Objekt andere Werte. ... werden im Speicher für jedes Objekt neu angelegt. ... können meist nur über Methoden der eigenen Klasse verändert

werden.

Page 23: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 23

Eigenschaften in einer Textbeschreibung ... entsprechen meist der Beschreibungen eines Objekts.

Das Auto ist rot und hat einen KM-Stand von 130.000. Die Milch ist pasteurisiert. Sobald ein Buch im Lager vorhanden ist, wird es an den Kunden

ausgeliefert. ... sind Substantive, die einen Rückbezug auf ein anderes Substantiv

besitzen. Die Menge des Artikels. Ausleihdatum des Buches. Anmeldung eines Autos.

Page 24: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 24

Eigenschaften in VB

Class FahrzeugPrivate geschwindigkeit As Integer = 0Private farbe As StringPrivate ladung As Integer

End Class

Module Bewegung

Sub Main() Dim myFahrzeug As Fahrzeug

myFahrzeug = New Fahrzeug End Sub

End Module

Page 25: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 25

Sichtbarkeit Private oder Dim

Der Zugriff auf Attribute ist von außen her nicht möglich. Ein Zugriff von außen ist nicht zulässig. Die Eigenschaft kann nur mit Hilfe einer Methode verändert werden. Schreibschutz.

Public Die Attribute sind öffentlich zugänglich. Alle Objektvariablen der Klasse können auf die Attribute zugreifen

und diese verändern.

Page 26: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 26

Property ... bestehen aus der Prozedur

... Get, um einen Attributwert zu lesen. ... Set, um einen Attributwert zu setzen.

... bieten die Möglichkeit, Attributwerte zu überprüfen. ... ermöglichen es, Eigenschaften zu kapseln. ... können mit Hilfe des Modifiziers

... WriteOnly nur schreibend auf ein Attributwert zugreifen. ... ReadOnly nur lesend auf ein Attributwert zugreifen.

Page 27: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 27

Property definieren

Public Class clsFahrzeug Private pGeschwindigkeit As Integer Property geschwindigkeit() As Integer

Get Return pGeschwindigkeit End Get

Set(ByVal value As Integer)

If value > 0 Then pGeschwindigkeit = value End If End Set End PropertyEnd Class

Page 28: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 28

Standard-Property nutzen

Public Class clsFahrzeug Private pGeschwindigkeit As Integer Default Property geschwind(ByVal maxGeschwind As Integer) As Integer

Get Return pGeschwindigkeit End Get

Set(ByVal value As Integer)

If value > 0 And (value < maxGeschwind) Then pGeschwindigkeit = value End If End Set End PropertyEnd Class

Page 29: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 29

Hinweise Der Standardeigenschaft muss mindestens ein Parameter übergeben

werden. Eine Klasse besitzt immer nur eine Standardeigenschaft. Die Property darf nicht als statisch oder privat deklariert werden.

Page 30: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 30

Default-Property nutzen

Sub Main() Dim myFahrzeug As clsFahrzeug Dim maxG As Integer

maxG = 100 myFahrzeug = New clsFahrzeug myFahrzeug.geschwind(maxG) = 10 myFahrzeug.geschwind(maxG) = myFahrzeug.geschwind(maxG) - 1

End Sub

Page 31: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 31

Lesende Property

Public Class clsFahrzeug Private pGeschwindigkeit As Integer Private maxTankinhalt As Long Private nowTankinhalt As Double

Public ReadOnly Property Tankinhalt() As Double Get Return nowTankinhalt End Get End Property

End Class

Page 32: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 32

With-Anweisung nutzen

Dim myFahrzeug As clsFahrzeug

With myFahrzeug .Tankfuellung = 80 .Tanken(55)End With

With object ... End With bezieht sich immer auf das angegebene Objekt. Eigenschaften und Methoden, die zu dem angegebenen Objekt

gehören, benötigen kein Bezug zu Ihren Objekt.

Page 33: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 33

Konstruktoren .. sind spezielle Methoden für die Initialisierung von Attributwerten einer

Klasse. ... setzten das Objekt in einen definierten Anfangszustand. ... werden automatisch beim Erzeugen des Objekts aufgerufen. Jedes

benutzerdefinierte Objekt erbt von Object den Standardkonstruktor New().

... sind immer Prozeduren mit der Bezeichnung New. ... können überladen werden.

Page 34: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 34

Konstruktor erstellen

Public Class clsFahrzeug Private bezeichnung As String Private pGeschwindigkeit As Integer Private maxTankinhalt As Long Private nowTankinhalt As Double

Public Sub New() bezeichnung = "Mein Auto" pGeschwindigkeit = 0 maxTankinhalt = 80 nowTankinhalt = 10 End Sub

End Class

Page 35: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 35

Konstruktor mit Parametern

Public Class clsFahrzeug Private bezeichnung As String Private pGeschwindigkeit As Integer Private maxTankinhalt As Long Private nowTankinhalt As Double

Public Sub New(ByVal bezeichnung, ByVal maxTankinhalt) Me.Autoname = bezeichnung Me.Tankfuellung = maxTankinhalt End Sub

End Class

Page 36: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 36

Statische Eigenschaften ... haben für alle Objekte einer Klasse den gleichen Wert. ... sind Eigenschaften, deren Werte schon im Bauplan feststehen. ... sind konstant. ... werden nur einmal für jede Klasse angelegt. ... sind vorhanden, bevor ein neues Objekt erzeugt wird. ... werden zum Beispiel genutzt,

... um die Anzahl der Objekte einer Klasse zu ermitteln. ... um Eigenschaft, die für alle Objekte den gleichen Attributwert

haben, zu initialisieren. ... werden mit Shared gekennzeichnet. ... werden als Klassenvariablen bezeichnet.

Page 37: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 37

Statische (konstante) Eigenschaften

Public Class clsFahrzeug Public Shared ReadOnly Raeder = 4

Private Shared anzahlAuto As Long Private bezeichnung As String Private pGeschwindigkeit As Integer Private maxTankinhalt As Long Private nowTankinhalt As Double

End Class

Page 38: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 38

Statische (variable) Eigenschaften

Public Class clsFahrzeug Public Shared ReadOnly Raeder = 4

Private Shared anzahlAuto As Long

Private bezeichnung As String Private pGeschwindigkeit As Integer Private maxTankinhalt As Long Private nowTankinhalt As Double

End Class

Page 39: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 39

Statische Eigenschaft nutzen

Public Sub New() bezeichnung = "Mein Auto" pGeschwindigkeit = 0 maxTankinhalt = 80 nowTankinhalt = 10 clsFahrzeug.anzahlAuto = clsFahrzeug.anzahlAuto + 1 End Sub

Public Sub New(ByVal bezeichnung As String, ByVal maxTankinhalt As Double) Me.Autoname = bezeichnung Me.Tankfuellung = maxTankinhalt clsFahrzeug.anzahlAuto = clsFahrzeug.anzahlAuto + 1 End Sub

Page 40: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 40

Statische Methoden ... werden nur einmal für jede Klasse angelegt. ... bieten Berechnung an, die für alle Objekte gleich sind. ... werden als Klassenmethoden bezeichnet. ... haben Zugriff auf Klassenvariablen und statische Eigenschaften

sowie statische Methoden.

Page 41: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 41

... definieren

Public Shared Function VerbrauchProKm(ByVal km As Double, ByVal liter As Double) As Double

Dim verbrauch As Double = 0

If km > 0 Then verbrauch = (100 * liter) / km End If

Return verbrauch

End Function

Page 42: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 42

Vererbung ... stellt eine "ist eine"-Beziehung zwischen Klassen dar. Beispiel:

Fahrzeuge werden als Basisklasse (Wurzel) genutzt. Die Basisklasse teilt sich in die Blätter "Land", "Wasser" und "Luft"

auf. Die Blätter werden als Subklasse der Basisklasse "Fahrzeuge" definiert.

Page 43: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 43

Regeln Jede Klasse erbt von ihrer Basisklasse Eigenschaften und Methoden. Die geerbten Eigenschaften und Methoden können überlagert oder

ergänzt werden. Die Hierarchie sollte nicht mehr als drei Ebenen besitzen. In VB kann nur von einer Klasse geerbt werden.

Page 44: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 44

Basisklassen und Subklassen

Fahrzeuge

Land Wasser Luft

Moterisiert

Unmoterisiert

Schiene

Moterisiert

Unmoterisiert

Zeppelin

Heißluftballon

Flugzeug

Basisklasse

Subklasse

Page 45: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 45

Generalisierung und Spezialisierung

Fahrzeuge

Land Wasser Luft

Moterisiert

Unmoterisiert

Schiene

Moterisiert

Unmoterisiert

Zeppelin

Heißluftballon

Flugzeug

Spezialisierung

Generalisierung

Page 46: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 46

Basisklasse

Public Class clsGrafik Private xPos As Long Private yPos As Long

Sub New() Me.xPos = 0 Me.xPos = 0 End Sub

Sub New(ByVal x As Integer, ByVal y As Integer) Me.xPos = x Me.yPos = y End Sub

...

Page 47: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 47

SubklassePublic Class clsRechteck Inherits clsGrafik Private breite As Long Private hoehe As Long

Sub New(ByVal width As Long, ByVal height As Long) MyBase.New() Me.breite = width Me.hoehe = height End Sub

Sub New(ByVal width As Long, ByVal height As Long, ByVal x As Long, ByVal y As Long)

MyBase.New(x, y) Me.breite = width Me.hoehe = height End Sub

Page 48: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 48

Zugriffsrechte Private

Der Zugriff auf die Methoden oder Attribute ist von außen her nicht möglich.

Ein Zugriff von außen ist nicht zulässig. Eigenschaften sind meist privat.

Protected Der Zugriff ist von außerhalb der Klasse verboten Ausnahme: Subklassen können auf die Eigenschaften zugreifen.

Public Die Methoden und Attribute sind öffentlich zugänglich. Alle Objekte einer Klasse können auf diese Methoden und Attribute

zugreifen. Methoden sind meist öffentlich.

Page 49: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 49

Grafische DarstellungclsGrafik

Private xPosPrivate yPos

Proteced punkt

Public ausgabe

clsRechteck : clsGrafik

clsPrint

Page 50: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 50

Konstruktoren ... werden nicht vererbt. Es wird immer zuerst der parameterlose Konstruktor der Basisklasse

aufgerufen. Es wird zuerst die Basisklasse und dann die Subklasse erzeugt.

Page 51: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 51

Zugriff auf den Konstruktor der BasisklassePublic Class clsRechteck Inherits clsGrafik Private breite As Long Private hoehe As Long

Sub New(ByVal width As Long, ByVal height As Long) MyBase.New() Me.breite = width Me.hoehe = height End Sub

Sub New(ByVal width As Long, ByVal height As Long, ByVal x As Long, ByVal y As Long)

MyBase.New(x, y) Me.breite = width Me.hoehe = height End Sub

Page 52: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 52

Me und MyBase Me

Verweis auf das aktuelle Objekt. Verweis auf ein Objekt, in dem der Code momentan ausgeführt wird.

MyBase Aufruf von Funktionen und Eigenschaften der geerbten Klasse. Verweis auf die Basisklasse.

Page 53: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 53

Polymorphie (Vielgestaltigkeit) Eine Variable wird für Objekte verschiedener Klassen genutzt. Eine Methode wird von unterschiedlichen Objekte verschiedener

Klassen genutzt. Jede Klasse interpretiert die Methode anders.

Page 54: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 54

Statische Polymorphie Überladung von Methoden. Gleichartige Aktionen werden mit unterschiedlichen Datentypen und /

oder Parametern durchgeführt. Wenn eine Methode mit Overloads gekennzeichnet wird, müssen alle

überladenen Methoden mit dem Modifizier gekennzeichnet werden. Die Methode der Subklasse hat Vorrang vor der Methode der

Basisklasse.

Page 55: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 55

Merkmale Methoden haben den gleichen Namen. Methoden unterscheiden sich in der Anzahl der übergebenen

Parameter oder deren Datentyp. Ausnahme: Geerbte Methoden müssen sich nicht in der Anzahl der Parameter oder deren Datentyp unterscheiden.

Der Rückgabewert spielt keine Rolle.

Page 56: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 56

Konstruktoren überladenPublic Class clsRechteck Inherits clsGrafik Private breite As Long Private hoehe As Long

Sub New(ByVal width As Long, ByVal height As Long) MyBase.New() Me.breite = width Me.hoehe = height End Sub

Sub New(ByVal width As Long, ByVal height As Long, ByVal x As Long, ByVal y As Long)

MyBase.New(x, y) Me.breite = width Me.hoehe = height End Sub

Page 57: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 57

Methoden der Basisklasse überladen

Public Overloads Function GetInformation() As String Dim ausgabe As String

ausgabe = MyBase.GetInformation ausgabe = ausgabe + vbCrLf ausgabe = ausgabe + "Breite: " + breite.ToString

ausgabe = ausgabe + ", Hoehe: " + hoehe.ToString Return ausgabe

End Function

Public Overloads Function Verschieben(ByVal versatzX As Integer) As Long MyBase.PositionX = MyBase.PositionX + versatzX

Return MyBase.PositionX End Function

Page 58: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 58

Dynamische Polymorphie Methoden der Basisklasse werden durch die Subklasse überlagert. Methoden der Basisklasse werden durch Methoden aus der Subklasse

überschrieben. Der Name der Methode ist gleich, aber die Funktionalität wird an die Subklasse angepasst.

Late Binding. Die Zuordnung der Methode zu einem Aufruf erfolgt zur Laufzeit.

Page 59: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 59

Methoden der Basisklasse überlagern

Public Shadows Function Verschieben(ByVal versatzX As Integer) As Long MyBase.PositionX = MyBase.PositionX + versatzX

Return MyBase.PositionX End Function

Page 60: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 60

Methoden der Basisklasse können überschrieben werden

Public Overridable Function GetInformation() As StringDim ausgabe As String

ausgabe = "X-Position: " + xPos.ToStringausgabe = ausgabe + ", Y-Position: " + yPos.ToStringReturn ausgabe

End Function

Page 61: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 61

Methoden der Basisklasse überschreiben

Public Overrides Function GetInformation() As String Dim ausgabe As String

ausgabe = MyBase.GetInformation ausgabe = ausgabe + vbCrLf ausgabe = ausgabe + "Radius: " + radius.ToString Return ausgabe

End Function

Page 62: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 62

Voraussetzung In der Basisklasse ist die Funktion mit Overridable gekennzeichnet. In der Subklasse muss die Funktion mit Overrides gekennzeichnet

werden. Die Funktionen müssen

... den gleichen Namen besitzen. ... die gleiche Anzahl von Parametern mit dem gleichen Datentyp

besitzen. ... den gleichen Rückgabewert haben.

Page 63: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 63

Abstrakte MethodenPublic MustOverride Function GetInformation() As String … enthalten keinen Code. … bestehen nur aus dem Prozedurkopf. … müssen von allen Subklassen überschrieben werden. Alle Subklassen nutzen die Methode. Jede Subklasse benötigt aber

eine andere Implementierung. Die Sichtbarkeit muss in der Sub- sowohl als auch in der Basisklasse

identisch sein.

Page 64: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 64

Abstrakte KlassenPublic MustInherit Class clsGrafik Objekte dieser Klasse existieren nicht … dienen als Sammelbecken für Methoden, die alle Subklassen nutzen.

Die Subklassen implementieren die Methoden aber unterschiedlich. … können

… vollständig implementierte Methoden enthalten. … können Felder oder Eigenschaften enthalten.

Eine Klasse mit abstrakten Methoden muss als abstrakte Klasse gekennzeichnet werden.

Page 65: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 65

BeispielPublic MustInherit Class clsGrafik Public MustOverride Function GetInformation() As StringEnd Class

Public Class clsRechteck Inherits clsGrafik

Public OverRides Function GetInformation() As String Dim ausgabe As String

ausgabe = MyBase.GetInformation ausgabe = ausgabe + vbCrLf ausgabe = ausgabe + "Breite: " + breite.ToString ausgabe = ausgabe + ", Hoehe: " + hoehe.ToString Return ausgabe End FunctionEnd Class

Page 66: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 66

Schnittstellen (Interface) ... sind Verträge über eine bestimmte Form. ... ist ähnlich wie eine Klasse aufgebaut. ... enthalten

…kein End oder Anweisungen. … keine implementierten Methoden. … keine Felder.

… besitzen keine Konstruktoren. ... benötigen keine Modifikatoren für die Sichtbarkeit. Sie sind immer

öffentlich. Klassen können beliebig viele Schnittstellen einbinden. … können von anderen Schnittstellen erben.

Page 67: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 67

Deklaration der Schnittstelle

Interface IGrafik Property PositionX() As Long Property PositionY() As Long

Function GetInformation() As String Function Verschieben(ByVal versatzX As Integer, ByVal versatzY As Integer) As LongEnd Interface

Interface-Namen sollten mit einem großen I beginnen.

Page 68: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 68

Schnittstelle implementierenPublic Class clsRechteck Implements IGrafik

Function GetInformation() As String Implements IGrafik.GetInformation Dim ausgabe As String

... Return ausgabe End Function

Public Property PositionX1() As Long Implements IGrafik.PositionX Get End Get Set(ByVal value As Long) End Set End PropertyEnd Class

Page 69: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 69

Eigenen Namensraum erstellen

Imports SystemImports System.MathImports System.Console

Namespace AllKonto

Interface IKonto ... End Interface

Public Class clsGirokonto...

End Class

End Namespace

Eigene Klassen und Interfaces werden in Namensräumen

gekapselt.

Page 70: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 70

Hinweise Jeder Klassen- oder Schnittstellen-Name kommt nur einmal in jedem

Namensraum vor. In verschiedenen Namensräumen können auch gleiche Bezeichnungen

vorkommen. Namensräume können beliebig verschachtelt werden. Die Namespace-Anweisung darf nicht innerhalb eines Moduls genutzt

werden. Der Stamm-Namespace wird über die Projekteigenschaften verändert.

Page 71: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 71

Klassenbibliotheken erstellen Öffnen Sie die installierte Visual Basic 2008 Express Edition auf den

Schulungsrechner. Klicken Sie im Bereich Zuletzt geöffnete Projekte: auf den Textlink

Erstellen: Projekt. Im Dialogfenster Neues Projekt

... wählen Sie die Vorlage Klassenbibliothek aus. ... geben in das Textfeld Name eine selbsterklärende Bezeichnung

ein. ... klicken Sie zum Schluss auf die Schaltfläche OK.

In dem Projekt werden nur die benötigten Klassen und Schnittstellen definiert. Die verschiedenen Klassen können in Namensräumen zusammengefasst werden.

Page 72: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 72

Klassenbibliotheken enthalten ... die benötigten Klassen. ... definieren Schnittstellen. Die verschiedenen Klassen können in Namensräumen

zusammengefasst werden. Die Klassen sind in der Bibliothek öffentlich.

Page 73: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 73

DLL erzeugen Voraussetzung: Projekt vom Typ Klassenbibliothek. Klicken Sie auf Erstellen – [Name] erstellen. In dem Projektverzeichnis bin / Release wird eine Datei mit der

Endung .dll abgelegt.

Page 74: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 74

Verweis auf die DLL Erstellen Sie ein neues Projekt. Klicken Sie auf das Menü Projekt – Projekt-Verweis hinzufügen. Mit Hilfe der Registerkarte Durchsuchen wählen Sie die gewünschte

DLL aus. Anschließend wird die DLL mit Hilfe von Imports in die VB-Datei

eingebunden.

Page 75: VB.NET- Klassen und Objekte - luis.uni- · PDF fileEinführung in VB 19.02.09 Seite 3 Regeln Eine Prozedur kann in Abhängigkeit eines Parameters aufgerufen werden. In jeder Prozedur

Einführung in VB 19.02.09Seite 75

Schnittstelle implementierenPublic Class clsRechteck Implements IGrafik

Function GetInformation() As String Implements IGrafik.GetInformation Dim ausgabe As String

... Return ausgabe End Function

Public Property PositionX1() As Long Implements IGrafik.PositionX Get End Get Set(ByVal value As Long) End Set End PropertyEnd Class