Klassen

Werbung
MSDN Webcast:
VB.NET für Einsteiger und Umsteiger, Teil 5
Noch mehr Klassen und Strukturen
(Level 100)
Presenter: Daniel Walzenbach
Technologieberater
Microsoft Deutschland GmbH
[email protected]
http://blogs.msdn.com/walzenbach
Verlosung
Programmieren lernen mit
Visual Basic 2005
10 Bücher werden unter allen Teilnehmern verlost, die an mindestens sieben Webcasts teilnehmen
Visual Studio 2005 Express
Kleine Geschwister des Visual Studio 2005
Kostenlos
http://www.microsoft.com/germany/msdn/v
studio/products/express/vb/default.mspx
Visual Basic 2005 Express Edition
Visual C# 2005 Express Edition
Visual C++ 2005 Express Edition
Visual Web Developer 2005 Express Edition
SQL Server 2005 Express Edition
Weihnachtswebcast – Frage 2
Was ist „Orion“?
Ein Sternbild am Himmel
 Position 5 ein O
Ein C#-Befehl
 Position 1 ein D
Ein VB-Befehl
 Position 2 ein Q
Ein Raumschiff aus einer SciFi-Fernsehserie
 Position 5 ein O
Lösungswort bis einschl. 13.12.2006 an
[email protected]
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Klassen
Parameterübergabe steuern (ByVal, ByRef)
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Übungsaufgabe, Teil 4
Programmieren Sie eine Klasse „Rechteck“
In der Klasse werden Breite und Höhe des
Rechtecks festgehalten (als Integer)
Schreiben Sie mehrere Konstruktoren
„Leeres“ Rechteck initialisieren
„Quadrat“ initialisieren
„Rechteck“ mit Breite und Höhe initialisieren
Schreiben Sie Properties für Breite und Höhe
Schreiben Sie eine Methode „Zeichnen“
welche das Rechteck mit
Console.WriteLine() darstellt
Demonstration #1
demo
Übungsaufgabe, Teil 4
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Parameterübergabe steuern (ByVal, ByRef)
Klassen
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Grundlagen Stack/Heap
Hund: Fiffi
Was ist ein Stack
Heap
Stackanfang
Dim i As Integer = 5
Dim j As Integer = i
Dim Fiffi As New Hund
Fiffi.Name = "Fiffi"
Dim Waldo As Hund
Waldo = Fiffi
3.14
5
22.83
5
123.14324
Fiffi
Waldo
6.0
Referenz auf Fiffi
Referenz auf Fiffi
90
Stackzeiger (Stack Pointer)
Hier wird der nächste Wert
eingetragen, danach wird
der Stackzeiger erhöht
Stackende
Demonstration #2
demo
Demo Werte- und Referenztypen
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Parameterübergabe steuern (ByVal, ByRef)
Klassen
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Parameterübergabe steuern
Was passiert, wenn einer Methode ein Wert
übergeben wird und dieser in der Methode
geändert wird?
Ändert sich der Wert auch in der aufrufenden
Methode?
Sub Main()
Dim meinWert As Integer = 5
WertErhoehen(meinWert)
Console.WriteLine(meinWert)
' i = 6 ????
End Sub
Sub WertErhoehen(ByVal Wert As Integer)
Wert = Wert + 1
End Sub
Demonstration #3
demo
Parameterübergabe mit ByVal und ByRef
Parameterübergabe steuern
Zusammenfassung
Typ
Übergabe ByVal
Übergabe ByRef
Wertetyp (beinhaltet einen
Wert)
Methode kann weder die
Variable noch
Feldvariablen ändern.
Methode kann die Variable
und Feldvariablen ändern.
Referenztyp (beinhaltet
eine Referenz auf eine
Instanz einer Klasse oder
Struktur)
Methode kann die Variable
nicht, jedoch Feldvariablen
der Instanz welche die
Variable referenziert,
ändern.
Methode kann die
Variable, sowie
Feldvariablen der Instanz
welche die Variable
referenziert, ändern.
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Parameterübergabe steuern (ByVal, ByRef)
Klassen
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Klassen - Vererbung
Manchmal ist es sinnvoll, eine neue Klasse
von einer bereits existierenden Klasse
abzuleiten…
… wenn diese abgeleitete Klasse eine
Sonderform der abgeleiteten Klasse ist
Die abgeleitete Klasse erbt die Eigenschaften der
Basisklasse
Vererbung als „ist ein(e)“-Beziehung
Basisklasse aller .NET-Klassen ist
System.Object
Klassen - Vererbung
Die neue, abgeleitete (spezielle) Klasse,
„erbt“ alle öffentlichen (Public und
Protected) „Fähigkeiten“ der Basisklasse
Öffentliche Methoden
Öffentliche Eigenschaften
Öffentliche Konstruktoren
Öffentliche Felder
Alle privaten Elemente bleiben verborgen
Protected - Zugriff nur von der eigenen
oder abgeleiteten Klassen möglich
Klassen - Vererbung
Beispiel für Vererbung (Klassenhierarchie)
Tier
Spezialisierung nimmt zu
Amphibie
Vogel
Fisch
Collie
Säugetier
Reptil
Hund
Katze
Golden
Retriever
Labrador
Demonstration #4
demo
Vererbung
Methoden überschreiben
Methoden, die in der Basisklasse mit
Overridable implementiert sind, können
in der abgeleiteten Klasse mit Overrides
überschrieben werden
Schlüsselwort Overrides verwenden
Das Verhalten der abgeleiteten Klasse kann
so gegenüber der Basisklasse geändert
werden
Abstrakte Klassen u. virtuelle Methoden
Abstrakte Klassen sind Vorlagen für andere
Klassen
„Zwingen“ den Entwickler, in der abgeleiteten
Klasse die vorhandenen Methoden zu
implementieren
Public MustInherit Class Tier
Protected MustOverride Sub Atmen()
End Class
Public Class Hund
Inherits Tier
Public Name As String
Protected Overrides Sub Atmen()
' hier muss implementiert werden
' wie der Hund atmet
End Sub
End Class
Versiegelte Klassen
Klassen können versiegelt werden um ein
weiteres Ableiten von der Basisklasse zu
verhindern
Schlüsselwort: NotInheritable
Vorsichtiger Umgang mit NotInheritable
Im .NET-Framework sind einige Klassen
versiegelt
System.String, System.Console,
System.Text.StringBuilder, …
Demonstration #5
demo
Methoden überschreiben, abstrakte Klassen,
virtuelle Methoden, versiegelte Typen
Operatorenüberladung
Auch Operatorenprozeduren genannt
Werden ausschließlich als statische Funktionen
implementiert
Public Shared Operator +(ByVal Zahl1 As Zahl, ByVal Zahl2 As Zahl) As Zahl
Dim Ergebnis As New Zahl
Ergebnis.Zahl = Zahl1.Zahl + Zahl2.Zahl
Return Ergebnis
End Operator
Demonstration #6
demo
Operatorüberladung
Kernkonzepte der OOP
Klassen
Objekt
Methode
Ereignisse
Vererbung
Kapselung
Abstraktion
Polymorphie
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Parameterübergabe steuern (ByVal, ByRef)
Klassen
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Strukturen Übersicht
Strukturen
definieren einen zusammengesetzten Datentyp
haben ähnliche Eigenschaften wie Klassen
Strukturen – statt Klassen – sollten für Instanzen
eines Typs verwendet werden, die
klein und kurzlebig sind und/oder
häufig in anderen Objekten eingebettet werden
Von einer Struktur kann NICHT abgeleitet werden
Eine Struktur kann nicht von einer Basis abgeleitet
werden
Strukturen
Gemeinsamkeiten
Beide sind Container Typen
Beide können Konstruktoren, Methoden,
Properties, Felder, … implementieren
Unterschiede
Klassen sind Referenztypen, Strukturen
Wertetypen
Strukturen dürfen nicht leer sein
Strukturen sind nicht vererbbar
Strukturen benötigen keinen Konstruktor
Demonstration #7
demo
Strukturen
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Parameterübergabe steuern (ByVal, ByRef)
Klassen
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Übungsaufgabe
Schreiben Sie eine Klasse, die alle Daten
einer Person verwaltet
Name, Vorname, PLZ, Ort, Straße, Telefon
Überschreiben Sie die Methode ToString
für die Ausgabe der Daten
Implementieren Sie Eigenschaften zum
Setzen der Daten
Implementieren Sie eine einfache Prüfroutine
für die PLZ (PLZ > 0 und PLZ < 99999)
Agenda
Übungsaufgabe Teil 4
Grundlagen Stack/Heap
Parameterübergabe steuern (ByVal, ByRef)
Klassen
Vererbung
Hierarchien von Klassen
Überladen von Operatoren
Kernkonzepte der OOP
Strukturen
Übungsaufgabe
Zusammenfassung
Zusammenfassung
Parameterübergabe (ByVal, ByRef)
Weitere Features von Klassen kennengelernt
Vererbung
Überschreiben von Methoden
Abstrakte Klassen
Versiegelte Klassen
Strukturen als leichtgewichtige,
zusammengesetzte Datentypen (Wertetypen)
Nächste Termine
VB.NET für Einsteiger und Umsteiger, Teil 6
Interfaces
Montag, 04.12.2006 16:00-17:00 Uhr
VB.NET für Einsteiger und Umsteiger, Teil 7
Strukturierte Ausnahmebehandlung
Montag, 11.12.2006 16:00-17:00 Uhr
VB.NET für Einsteiger und Umsteiger, Teil 8
Arrays
Montag, 18.12.2006 16:00-17:00 Uhr
Referenzen & Downloads
Objektorientiertes Programmieren in Visual Basic
http://msdn2.microsoft.com/dede/library/b86b82w0(VS.80).aspx
Class-Anweisung
http://msdn2.microsoft.com/dede/library/wa0hwf23(VS.80).aspx
Structure-Anweisung
http://msdn2.microsoft.com/dede/library/k69kzbs1(VS.80).aspx
Vererbung in Visual Basic
http://msdn2.microsoft.com/dede/library/5x4yd9d5(VS.80).aspx
Referenzen & Downloads
Behandeln und Auslösen von Ereignissen
http://msdn2.microsoft.com/dede/library/edzehd2t(VS.80).aspx
Argument Passing ByVal and ByRef
http://msdn2.microsoft.com/enus/library/ddck1z30(VS.71).aspx
Microsoft Visual Basic 2005 - Das Entwicklerbuch
http://www.edvbuchversand.de/mspress/product.asp?cnt=product&id=
ms-537&lng=0
MSDN Solve, Antworten für Entwickler
http://msdn-solve.de/
Questions and Answers
Daniel Walzenbach
[email protected]
http://blogs.msdn.com/walzenbach
Herunterladen