Hanspeter Mössenböck Softwareentwicklung mit C# 2.0 Ein kompakter Lehrgang 2., aktualisierte und erweiterte Auflage
Prof. Dr. Hanspeter Mössenböck Johannes Kepler Universität Linz Institut für Systemsoftware und Christian Doppler Labor für Automated Software Engineering Altenbergerstraße 69 A-4040 Linz E-Mail: moessenboeck@ssw.uni-linz.ac.at http://www.ssw.uni-linz.ac.at Lektorat: Christa Preisendanz Copy-Editing: Ursula Zimpfer, Herrenberg Satz: FrameMaker-Dateien vom Autor Herstellung: Birgit Bäuerlein Umschlaggestaltung: Helmut Kraus, www.exclam.de Druck: Koninklijke Wöhrmann B.V., Zutphen, Niederlande Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über <http://dnb.ddb.de> abrufbar. ISBN 3-89864-406-5 2., aktualisierte und erweiterte Auflage Copyright 2006 dpunkt.verlag GmbH Ringstraße 19 B 69115 Heidelberg Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen. Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen. 5 4 3 2 1 0
v Vorwort zur 2. Auflage Als die erste Auflage dieses Buches erschien, war C# noch eine etwas exotische Programmiersprache, die von manchen Leuten mit Skepsis betrachtet wurde und deren Chancen, sich gegen Java oder C++ durchzusetzen, ungewiss waren. Mittlerweile hat sich C# sowohl in der Industrie als auch an Hochschulen etabliert. Viele Firmen setzen bei neuen Projekten auf Microsofts.NET-Plattform und auch immer mehr bestehende Projekte werden von Win32 auf.net umgestellt. Damit wächst natürlich auch das Interesse an C# als der»haussprache«von.net. In der zweiten Auflage dieses Buches wurden die neuen Sprachmerkmale von C# 2.0, zu denen es in der ersten Auflage nur eine kurze Vorschau gab, in das Buch integriert und ausgebaut. Es gibt jetzt ein eigenes Kapitel über generische Bausteine und eines über Iteratoren. Weitere Neuerungen von C# 2.0 wie anonyme Methoden, partielle Typen oder statische Klassen wurden direkt in die passenden Kapitel integriert. Das Buch bietet also jetzt ein rundes und vollständiges Bild von C# 2.0. Mittlerweile kündigt sich sogar schon C# 3.0 an. Auch hier wird es wieder einige neue und mächtige Features geben, die vor allem die Verarbeitung großer Datenmengen im Hauptspeicher mittels SQL-artiger Query-Ausdrücke erlauben. Zusätzlich bietet C# 3.0 so genannte Lambda-Ausdrücke als Kurzform anonymer Methoden sowie die Möglichkeit, Erweiterungsmethoden von außen zu bestehenden Klassen»dazuzumischen«. Nicht zuletzt werden in C# 3.0 auch so genannte anonyme Typen als Projektion auf existierende Typen eingeführt sowie eine neue Art, Objekte mittels Objektinitialisierern zu befüllen. Alle diese neuen Eigenschaften werden in einem Vorschaukapitel ausführlich beschrieben und mit Beispielen erläutert. Wie auch in der ersten Auflage enthält dieses Buch am Ende jedes Kapitels zahlreiche Übungsaufgaben, zu denen es unter http://dotnet.jku.at Musterlösungen gibt. Somit ist das Buch nicht nur für den Unterricht, sondern auch zum Selbststudium geeignet. Ich bedanke mich bei den Lesern der ersten Auflage für die vielen (meist positiven) Zuschriften und bin auch weiterhin für alle Anregungen offen. Hanspeter Mössenböck Februar 2006
vi
vii Vorwort zur 1. Auflage C# (sprich see sharp) ist Microsofts Antwort auf Java. C# ist eine moderne Programmiersprache für Praktiker, in der die neuesten Konzepte der Softwaretechnik wie Objektorientierung, Komponentenorientierung, Sicherheit, Versionierbarkeit, Parallelität, Ausnahmebehandlung, Reflection und vieles mehr vereinigt sind. Wozu aber schon wieder eine neue Programmiersprache? Haben wir nicht bereits Java, C++, Visual Basic und all die anderen Sprachen? Der Grund, warum Microsoft C# einführte, heißt.net (dot net)..net ist Microsofts neue Software- Plattform, die mit vielen Problemen der Windows-Programmierung aufräumt. Herkömmliche Sprachen können unter.net zwar eingesetzt werden, reizen es aber nicht aus. Deshalb hat Microsoft mit C# eine neue Haussprache geschaffen, die optimal zu.net passt. Wer unter.net arbeitet, wird früher oder später nicht darum herumkommen, auch C# zu erlernen, was übrigens nicht schwer ist, denn C# ist stark an Java und C++ angelehnt und mit den meisten herkömmlichen Sprachen binärkompatibel. Als objektorientierte Sprache bietet C# Klassen und Interfaces mit einfacher Codevererbung und mehrfacher Schnittstellenvererbung. Die komponentenbasierte Programmierung wird mit neuen Sprachelementen wie Properties, Events und Delegates unterstützt. Die Komponenten, die unter.net Assemblies heißen, sind dynamisch ladbar und tragen eine Versionsnummer, mit der der Lader sicherstellt, dass Software immer in der korrekten Version verwendet wird. Durch digital signierte Assemblies wird schließlich Viren ein Riegel vorgeschoben. Inhalt Dieses Buch beschreibt den gesamten Sprachumfang von C# in kompakter Form. Von den einfachen Datentypen und Anweisungen über die objektorientierte und komponentenbasierte Programmierung bis hin zu Threads, Exceptions, Attributen und automatisch generierter Dokumentation wird der Leser mit allen Eigenschaften von C# vertraut gemacht. Die einzelnen Sprachelemente werden anhand von Beispielen beschrieben. Im Anhang findet sich dann die Grammatik von C#, die für jedes Sprachelement seine genaue Syntax angibt.
viii Vorwort zur 1. Auflage Keine Programmiersprache kommt heute ohne Klassenbibliothek aus. Deshalb gibt dieses Buch auch einen Überblick über die reichhaltige Bibliothek von.net, die Typen für alle erdenklichen Zwecke bereithält: von einfachen Datenstrukturen wie Listen, Mengen oder Hashtabellen über Ein-/Ausgabeklassen, Netzwerkklassen, grafische Benutzeroberflächenelemente bis hin zu fortgeschrittenen Themen wie Reflection oder Web-Programmierung..NET und C# unterstützen die Internet-Programmierung. Dazu gehören unter anderem Web-Services (Business-to-Business-Dienste im Internet) und dynamische Webseiten, die mit der neuen ASP.NET-Technologie erstellt werden. In Form von Fallstudien zeigt dieses Buch, wie man Web-Services und dynamische Webseiten mit ASP.NET entwickelt. Die Fallstudien behandeln auch grafische Benutzeroberflächen und ihre Erstellung mittels Windows Forms und der Entwicklungsumgebung Visual Studio.NET. Obwohl mit C# und.net eine neue Ära der Windows-Programmierung angebrochen ist, werden die Brücken zur älteren Win32-Technologie und zu COM nicht abgerissen. Eines der Kapitel dieses Buchs zeigt, wie man COM-Komponenten von.net aus aufrufen kann und umgekehrt. C# ist eine lebende Sprache. Für die nächste Version von.net wurden neue Sprachelemente wie generische Typen, Iteratoren, anonyme Methoden und partielle Typen angekündigt. Obwohl diese Elemente zum Zeitpunkt des Erscheinens dieses Buchs noch nicht verfügbar waren, ist ihnen bereits ein Kapitel gewidmet, weil sie wesentlich zur Mächtigkeit und bequemen Benutzung von C# beitragen. Zielpublikum Dieses Buch richtet sich an Praktiker, die C# kennen lernen wollen, sowie an Studenten, die diese Sprache in fortgeschrittenen Lehrveranstaltungen zum Thema Objektorientierung, Komponentenorientierung oder.net einsetzen. Am Ende jedes Kapitels findet man zahlreiche Übungsaufgaben, zu denen es unter http:// dotnet.jku.at Musterlösungen gibt. Dadurch ist das Buch auch zum Selbststudium geeignet. Mein Dank gilt vor allem meinen Mitarbeitern Wolfgang Beer, Dietrich Birngruber und Albrecht Wöß, mit denen ich.net und C# im Unterricht sowie in Projekten einsetze. Die Microsoft-Fachleute in Redmond, Cambridge und Wien hatten für Fragen immer ein offenes Ohr. Ich danke vor allem Jim Miller, Eric Gunnerson, Don Syme, Van Eden, Ralph Zeller und Alexander Holy. Nicht zuletzt sei auch den anonymen Gutachtern gedankt, die das Manuskript dieses Buchs mit großer Sorgfalt lasen. Hanspeter Mössenböck Mai 2003