MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 9 Zeichenketten, Delegates und Events (Level 100) Presenter: Daniel Walzenbach Technologieberater Microsoft Deutschland GmbH daniel.walzenbach@microsoft.com http://blogs.msdn.com/walzenbach
Verlosung Programmieren lernen mit Visual Basic 2005 10 Bücher werden unter allen Teil- nehmern verlost, die an mindes- tens sieben Webcasts teilnehmen
Visual Studio 2005 Express Kleine Geschwister des Visual Studio 2005 Kostenlos http://www.microsoft.com/germany/msdn/vstudio/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
Agenda Übungsaufgabe Teil 8 Zeichenketten Delegates Events Zusammenfassung
Übungsaufgabe Teil 8 Berechnen Sie die Wurzeln von 1 bis n in einer for Schleife n soll von dem Anwender frei eingegeben werden Speichern Sie die Wurzeln in einem Array der richtigen Größe Bilden Sie den Mittelwert aller Wurzeln in dem Array Implementieren Sie Ausnahmebehandlung um potentielle Fehler abzufangen Geben Sie alle Wurzeln und deren Mittelwert aus
Demonstration #1 demo Übungsaufgabe, Teil 8
Agenda Übungsaufgabe Teil 8 Zeichenketten Delegates Events Zusammenfassung
Zeichenketten Eine Zeichenkette ist ein Array aus Char Das Arbeiten mit Char Arrays ist nicht so komfortable wie mit der String Klasse Die String Klasse ist Klasse aus dem .NET Framework kein VB.NET Feature
Zeichenketten Zeichenketten anlegen (geht ohne new) Zeichenketten können zusammengefügt werden Dim text As String = "Hallo Welt!" Dim text1 As String = "Hallo" Dim text2 As String = " Welt" Dim text3 As String = text1 & text2 & "!" Console.WriteLine(text3)
Zeichenketten Die String Klasse des .NET Frameworks enthält viele Methoden und Properties Length EndsWith, StartsWith IndexOf, LastIndexOf IndexOfAny, LastIndexOfAny Insert, Remove, Replace Trim, TrimLeft, TrimRight Substring, Split, Concat, Join, ToCharArray ToLower, ToLowerInvariant, ToUpper, ToUpperInvariant
Zeichenketten Die String Klasse des .NET Frameworks enthält viele statische Methoden und Properties Empty Concat Format IsNullOrEmpty Join
Zeichenketten Achtung, Performance!!! Sting ist unveränderlich Viele neue String Objekte können ein Programm langsam machen Dim Text As String = String.Empty For i As Integer = 0 To 100000 Text += "Hallo" Next Console.WriteLine(Text) ' Besser! Dim TextConcat As New System.Text.StringBuilder TextConcat.Append("Hallo") Console.WriteLine(TextConcat)
Demonstration #2 demo Strings
Agenda Übungsaufgabe Teil 8 Zeichenketten Delegates Events Zusammenfassung
Delegates (Funktionszeiger) Wofür werden Zeiger auf Funktionen benötigt? Beispiel: Sortierung Bei der Sortierung muss entschieden werden, welches das größere von zwei Objekten ist Problemlos sind: Integer, Double, String, … Was ist mit eigenen Klassen?
Demonstration #3 demo Bubblesort
Delegates (Funktionszeiger) Es muss festgestellt werden, welches Objekt größer ist… … egal um welchen Objekttyp es sich handelt => eigene Vergleichsroutine schreiben If Daten(j) > Daten(pos) Then pos = j End If
Delegates (Funktionszeiger) Ein Delegate ist ein Objekt das auf eine Methode zeigt Wenn dieses Objekt verwendet wird, dann wird die Methode aufgerufen auf die das Delegate zeigt
Delegates (Funktionszeiger) Schritt 1: Delegate deklarieren Schritt 2: Delegate Objekt instanzieren Schritt 3: Delegate verwenden Delegate Function Add(ByVal i1 As Integer, ByVal i2 As Integer) As Integer Dim a As New Add(AddressOf Addiere) Console.WriteLine(a(5, 6)) Function Addiere( _ ByVal Summand1 As Integer, _ ByVal Summand2 As Integer) As Integer Return Summand1 + Summand2 End Function
Delegates (Funktionszeiger) Vollständiges Beispiel Delegate Function Add(ByVal i1 As Integer, ByVal i2 As Integer) As Integer Sub main() Dim a As New Add(AddressOf Addiere) Console.WriteLine(a(5, 6)) End Sub Function Addiere( _ ByVal Summand1 As Integer, _ ByVal Summand2 As Integer) As Integer Return Summand1 + Summand2 End Function
Demonstration #4 demo Delegates Flexibler Bubblesort
Agenda Übungsaufgabe Teil 8 Zeichenketten Delegates Events Zusammenfassung
Events (Ereignisse) Was sind Events? Typische Beispiele: Eine E-Mail ist angekommen Ein Button wurde angeklickt Der Inhalt einer Datei auf der Festplatte ändert sich
Events (Ereignisse) Ein Event ist eine Nachricht, die von einem Objekt (Sender) gesendet wurde um über ein bestimmtes Ereignis zu informieren. Das Objekt, welches die Nachricht erhält ist der Empfänger Problem: Der Sender weiß im Vorfeld nicht, welches Objekt oder Methode das Ereignis bearbeitet. Zwischen dem Sender und Empfänger wird ein „Vermittler“ benötigt => Delegate
Demonstration #5 demo Events
Events (Ereignisse) Entscheidende Eigenschaft bei Events: Es wird NICHT festgelegt, welche Methode beim Auslösen des Events aufgerufen wird Die aufzurufende Methode wird von dem Programmierer angegeben Beispiel: Wenn der Button „btn1“ geklickt wird soll die Methode „xyz“ aufgerufen werden
Events (Ereignisse) Jedes Event hat Argumente Standard: EventArgs Spezielle Argumentklassen sind möglich Eigene Argumentklassen sind auch möglich Eigene Klasse durch Ableitung von der Klasse EventArgs Eigene EventArgs-Klasse wird im Delegate angegeben
Agenda Übungsaufgabe Teil 8 Zeichenketten Delegates Events Zusammenfassung
Übungsaufgabe Schreiben Sie ein Programm, welches eine „horizontale“ Balkengrafik darstellen kann Die Höhe der Balken liegt in einem Integer Array ACHTUNG: Max. Länge des Balkens muss berücksichtigt werden (Breite des Fensters) Die Balkenerzeugung und –verwaltung soll in einer eigenen Klasse implementiert werden Das verwendete Zeichen für die Balken soll frei wählbar sein
Übungsaufgabe Sonstige Features: Aussehen Links neben dem Balken soll die Höhe ausgegeben werden Die Balkendaten sollen von der Tastatur eigelesen werden Implementieren Sie eine Sortierroutine Aussehen 25:xxxxxxxxxxxxxxxxxxxxxxxxx 18:xxxxxxxxxxxxxxxxxx 5:xxxxx 7:xxxxxxx 12:xxxxxxxxxxxx
Agenda Übungsaufgabe Teil 8 Zeichenketten Delegates Events Zusammenfassung
Zusammenfassung Strings sind ein sehr mächtiges Werkzeug Werden in jedem Programm verwendet Delegates und Events ermöglichen Flexible Programme Sehr wichtig beispielsweise bei Benutzerschnittstellen
Nächster Termin VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek Montag, 12.02.2007 16:00-17:00 Uhr
Referenzen & Downloads String-Klasse http://msdn2.microsoft.com/de-de/library/system.string(VS.80).aspx Übersicht über Formatierung http://msdn2.microsoft.com/de-de/library/26etazsy(VS.80).aspx Behandeln und Auslösen von Ereignissen http://msdn2.microsoft.com/de-de/library/edzehd2t(VS.80).aspx Ereignisse und Delegaten http://msdn2.microsoft.com/de-de/library/17sde2xt(VS.80).aspx
Referenzen & Downloads Microsoft Visual Basic 2005 - Das Entwicklerbuch http://www.edv-buchversand.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 daniel.walzenbach@microsoft.com http://blogs.msdn.com/walzenbach