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