Jorg Witte. Programmieren in C#



Ähnliche Dokumente
Werner Poguntke. Keine Angst vor Mathe

Robert Rieg. Planung und Budgetierung

Henrike Viehrig. Militärische Auslandseinsätze

Holiand/Scharnbacher. Grundlagen statistischer Wahrscheinlichkeiten

Ulrich Schacht / Matthias Fackler (Hrsg.) Praxishandbuch Unternehmensbewertung

Grundlagen der doppelten Buchführung

Hermann Korte Bernhard Schäfers (Hrsg.) Einführung in Hauptbegriffe der Soziologie

Dietmar Abts. Masterkurs Client/Server-Programmierung mit Java

Karin Sanders Andrea Kianty. Organisationstheorien

Dieter Eh Heinrich Krahn. Konstruktionsfibel SolidWorks 2008

Rainer Lasch/Gregor Schulte. Quantitative Logistik-Fallstudien

Klaus North/Kai Reinhardt. Kompetenzmanagement in der Praxis

Heike Bruch/Stefan Krummaker/Bernd Vogel (Hrsg.) Leadership Best Practices und Trends

Laplace-Transformation

Hans-Georg Kemper Henning Baars. Business Intelligence Arbeits- und Übungsbuch

Klaus Feldmann. Tod und Gesellschaft

Josef Maisch. Wissensmanagement am Gymnasium

Arbeitsbuch Mathematik

Oliver Kruse I Volker Wittberg (Hrsg.) Fallstudien zur Unternehmensführung

Günther Bourier. Statistik-Übungen

Matthias Moßburger. Analysis in Dimension 1

Maximilian Lackner. Talent-Management spezial

Doris Krumpholz. Einsame Spitze

Werner Poguntke. Keine Angst vor Mathe

Karl Herndl. Auf dem Weg zum Profi im Verkauf

Otto Forster Thomas Szymczak. Übungsbuch zur Analysis 2

Stefan Calefice. 20 Jahre Begrüßungsgeld

Heino Hollstein-Brinkmann Silvia Staub-Bernasconi (Hrsg.) Systemtheorien im Vergleich

Dagmar Simon Andreas Knie Stefan Hornbostel (Hrsg.) Handbuch Wissenschaftspolitik

Informatik & Praxis. H. Eirund / B. MOiler / G. Schreiber Formale Beschreibungsverfahren der Informatik

Christina Holtz-Bacha (Hrsg.) Fußball Fernsehen Politik

Sylvia Marlene Wilz (Hrsg.) Geschlechterdifferenzen Geschlechterdifferenzierungen

Manfred Kühn Heike Liebmann (Hrsg.) Regenerierung der Städte

Jörg Freiling I Tobias Kollmann (Hrsg.) Entrepreneurial Marketing

Albrecht Beutelspacher. Kryptologie

Otger Autrata Bringfriede Scheu. Soziale Arbeit

Ivonne Küsters. Narrative Interviews

Markus Ottersbach Thomas Zitzmann (Hrsg.) Jugendliche im Abseits

Dorit Bosse (Hrsg.) Gymnasiale Bildung zwischen Kompetenzorientierung und Kulturarbeit

Lernen zu lernen. Werner Metzig Martin Schuster. Lernstrategien wirkungsvoll einsetzen

Frank Hillebrandt. Praktiken des Tauschens

Alfred Böge I Walter Schlemmer. Lösungen zuraufgabensammlung Technische Mechanik

Ralf Brand. Sportpsychologie

Elias Jammal (Hrsg.) Vertrauen im interkulturellen Kontext

Peter Arndt/Gerold Braun. Erfolgreich Kunden akquirieren

Margit Gätjens-Reuter. Betriebswirtschaft und Sekretariat

Georg Auernheimer (Hrsg.) Interkulturelle Kompetenz und pädagogische Professionalität

Nadja-Verena Paetz Firat Ceylan Janina Fiehn Silke Schworm Christian Harteis. Kompetenz in der Hochschuldidaktik

Heinrich Holland / Kurt Scharnbacher. Grundlagen der Statistik

Smilla Ebeling Sigrid Schmitz (Hrsg.) Geschlechterforschung und Naturwissenschaften

Hannes Krall (Hrsg.) Jungen- und Mannerarbeit

Andrea Hausmann. Kunst- und Kulturmanagement

Spezielle und allgemeine Relativitätstheorie Grundlagen, Anwendungen in Astrophysik und Kosmologie sowie relativistische Visualisierung

Thomas Schäfer. Statistik I

Kultursponsoring, Museumsmarketing, Kulturtourismus

Arnd-Michael Nohl. Interview und dokumentarische Methode

Verena Lewinski-Reuter Stefan Lüddemann (Hrsg.) Kulturmanagement der Zukunft

Ulrich Gebhard. Kind und Natur

Gerald Hofmann. Ingenieurmathematik für Studienanfänger

Ralf Bohnsack Iris Nentwig-Gesemann Arnd-Michael Nohl (Hrsg.) Die dokumentarische Methode und ihre Forschungspraxis

Fritz Böhle. Sabine Pfeiffer. Nese Sevsay-Tegethoff (Hrsg.) Die Bewältigung des unplanbaren

Wolfgang Gerß (Hrsg.) Bevölkerungsentwicklung in Zeit und Raum

Henning Schluß. Religiöse Bildung im öffentlichen Interesse

Hannes Peterreins / Doris Märtin / Maud Beetz. Fairness und Vertrauen in der Finanzberatung

Arnulf Deppermann. Gespräche analysieren

Klaus Weltner. Leitprogramm Mathematik für Physiker 1

Cyrus Achouri. Recruiting und Placement

Hans-Jürgen Appelrath, Dietrich Boles, Volker (laus, Ingo Wegener. Starthilfe Informatik

Springer Spektrum, Springer Vieweg und Springer Psychologie.

Gentechnik geht uns alle an!

Aufgabensammlung zur Einführung in die Statistik

Arnold Kitzmann. Massenpsychologie und Börse

Kommunikation im Krankenhaus

Regine Gildemeister Günther Robert. Geschlechterdifferenzierungen in lebenszeitlicher Perspektive

Thomas Schäfer. Statistik II

Christiane Schiersmann. Berufliche Weiterbildung

Die überzeugende Bewerbung

Anerkennung und Anrechnung außerhochschulisch

Dieter Flader Sigrun Comati. Kulturschock

Thomas Brüsemeister. Bildungssoziologie

Lothar Volkelt. Kompakt Edition: Geschäftsführer im Konzern

Instrumente des Care und Case Management Prozesses

Wolf Gerhold Thomas Hattenhauer Lange Sievert Haar Klausurenbuch Laufbahnprüfung/Steuerberaterprüfung

Transkript:

Jorg Witte Programmieren in C#

Jorg Witte Programmieren in C# Von den ersten Gehversuchen bis zu den Sieben-Meilen-Stiefeln Teubner B. G. Teubner Stuttgart Leipzig Wiesbaden

Bibliografische Information der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliographie; detaillierte bibliografische Daten sind im Internet Ober <http://dnb.ddb.de> abrufbar. Dr. rer. nat. habil. Jorg Witte Geboren 1957 in Frankfurt am Main. Studium der Mathematik und Physik an der FU-Berlin. 1988 Diplom in Mathematik. 1991 Promotion und 1997 Habilitation. 1988-1993 wissenschaftlicher Mitarbeiter der FU-Berlin. 1988-1992 Vorlesungen vor Informatikstudenten an der Technischen Fachhochschule Berlin. ab 1993 Vorlesungen an der FU-Berlin. 1998 Forschungs- und Lehraufenthalt an der Middle East Technical University. Ankara. ab 2000 Dozent for Programmiersprachen in der beruflichen Fortbildung. 1. Auflage Juli 2004 Aile Rechte vorbehalten B. G. Teubner Verlag / GWV Fachverlage GmbH. Wiesbaden 2004 Der B. G. Teubner Verlag ist ein Unternehmen von Springer Science+Business Media. www.teubner.de Das Werk einschlieblich aller seinerteile ist urheberrechtlich geschotzt. Jede Verwertung auberhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulassig und strafbar. Das gilt insbesondere for Vervielfaltigungen. Obersetzungen. Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen. Handelsnamen. Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme. dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden dorften. Umschlaggestaltung: Ulrike Weigel. www.corporatedesigngroup.de Gedruckt auf saurefreiem und chlorfrei gebleichtem Papier. ISBN-13:978-3-519-00471-4 e-isbn-13:978-3-322-80073-2 DOl: 10.1007/978-3-322-80073-2

Vorwort Dieses Buch ist aus einer Vorlesung entstanden, die ich im Sommersemester 2003 an der FU Berlin gehalten habe. Es flossen auch Erfahrungen ein, die ich als Dozent in der beruflichen Weiterbildung sammeln konnte. Die Studenten und Lehrgangsteilnebmer besaben keine Vorkenntnisse in der Programmiersprache C# und nur zum Teil Kenntnisse in einer anderen Programmiersprache. Auch an den Leser werden keine Voraussetzungen gestellt. Lediglich die Fiihigkeit zum logischen und abstrakten Denken solite er mitbringen. Mit einer Portion gesunden Menschenverstand sowie Interesse kann der Leser sehr tief in die Materie eindringen. Dieses Buch unterscheidet sich daher von vielen anderen Biichern iiber Programmiersprachen. Nicht selten wird der unbedarfte Leser mit einem iiber tausendseitigen Werk erschlagen, das eher filr Experten gescbrieben ist. Aber wie wird man ein Fachmann filr eine Programmiersprache? Programmieren ist auch eine Fertigkeit, die nicht nur theoretisch gelernt werden kann. Ein Musikinstrument zu spielen, lernt man auch nicht ausschlieblich in der Notenschule, sondern durch regelm1ibiges Dben. Dem Schiller muss aber auch gezeigt werden, wie er das machen soli. Eine Fiihigkeit muss vorgefiibrt werden, so dass sie nachgeahmt werden kann. Daher wird hier der Sachverhalt an vielen Beispielen verdeutlicht. Durch erganzende Dbungen erhiilt der Leser die Moglichkeit, das Erlernte auszuprobieren. Es w!ire aber zu kurz gegriffen, das Erlernen einer Programmiersprache ausschlieblich als den Erwerb eines handwerklichen Geschicks anzusehen. SchlieBlich ist eine Programmiersprache eine Sprache, mit der Informationen ausgedriickt werden konnen. Es konnen sehr komplexe Datenstrukturen und Operationen auf ihnen dargestelit werden. Ein fundiertes theoretisches Riistzeug ist unerliisslich. 1m Gegensatz zu einigen Biichern filr Einsteiger werden hier keine Kochrezepte vorgestelit, die es nur mechanisch, ohne Sinn und Verstand anzuwenden gilt. Eine Sprache - insbesondere eine Programmiersprache - besteht neben ihren Wortern aus einer Vielzahl von Regeln, wie die Worter zu verwenden sind. Eine Programmiersprache besitzt sowohl vorgegebene Worter als auch die Moglichkeit, Bezeichner selbst zu definieren. Es ist sogar moglich, eigene Verwendungsregeln zu definieren. All dieses sollte aber durchdacht geschehen. Daher wird auch ein grundlegendes Verstlindnis vermittelt. Zusammenhiinge und Anwendungsmoglichkeiten der sprachlichen Ausdrucksmittel werden dargestellt. Der Leser solite durch die LektUre in die Lage versetzt werden, die sprachlichen Mittel und Programmiertechniken selbst zu beurteilen und einzuordnen. Auch Beziige zu den auber-

6 Vorwort sprachlichen Anforderungen an ein Programm herzustellen, gemrt zu den Kompetenzen, die der Leser sich aneignen kann. Berlin, Marz 2004 Jl>rg Witte

7 Inhaltsverzeichnis Vorwort... 5 Inhaltsverzeichnis... 7 1 EinfUhrung in die objektorientierte Programmierung... 11 2 Warum eine neue Programmiersprache?... 15 3 Ein erstes Beispielprogramm... 17 4 Darstellung von Daten... 23 4.1 Grundlagen... 23 4.2 Hexadezimalsystem... 23 4.3 Wert- und Verweistypen... 24 5 Das NET-Framework... 26 5.1 Intermediate Language... 26 5.2 Die Standardklassenbibliothek... 27 6 Vordefinierte Datentypen... 28 6.1 Grundlagen... 28 6.1.1 Der logischetyp... 31 6.1.2 Der Zeichentyp... 31 6.1.3 Die Ganzzahltypen... 31 6.1.4 Die Gleitkommazahlen... 32 6.1.5 Dezimale... 32 6.1.6 Strings... 32 6.1.7 Die Klasse obj ect... 33 6.1.8 Konstanten... 34 6.1.9 Darstellung von Werten durch Bytezustande... 34 6.2 Typenkonvertierung... 35 7 Arrays... 39 8 Operationen und Ausdriicke... 47 8.1 Arithmetische Operatoren...48 8.2 Vergleichsoperatoren... 49 8.3 Logische Operatoren... 50 8.4 Bitweise Operatoren... 52 8.5 Zuweisungsoperatoren... 54 8.6 Sonstige Operatoren... 55 8.6.1 Der Type-Cast-Operator..... 55

8 Inhaltsverzeichnis 8.6.2 Der Fragezeichenoperator... 55 8.6.3 Vorrangregeln und Assoziativitat... 56 8.6.4 Ausdrucksanweisungen... 57 9 Statische Methoden und Variablen... 59 10 Programmsteuerung... 67 10.1 Verzweigungen... 67 10.2 Schleif en... 77 10.2.1 Grundlagen... 77 10.2.2 Die for-schleife... 77 10.2.3 Die while-schleife... 80 10.2.4 Die do-schleife... 82 10.3 Die Befehle break und continue... 83 11 Klassen und Objekte... 87 11.1 Definition und Verwendungsweise... 87 11.2 Instanzmethoden... 90 11.3 ParameterUbergabe als Wert oder Verweis... 93 11.4 Params-Parameter... 96 11.5 Lebensdauer und Sichtbarkeit von Variablen... 97 11.6 Uberladen von Methoden... 99 11.7 Uberladen von Operatoren... 101 11.8 Konstruktoren... 103 11.9 ZerstOren von Objekten... 109 12 Vererbung... 113 12.1 Einfiihrung... 113 12.2 Ableiten einer Klasse... 113 12.3 ~onvertierungen zwischen Basis- und abgeleiteten Klassen... 119 12.4 Uberlagem von Methoden... 123 12.4.1 Polymorphie... 123 12.4.2 Virtuelle Methoden... 124 12.4.3 Abstrakte Methoden... 127 12.4.4 Versteckte Methoden... 129 12.4.5 Versiegelte Methoden und Klassen... 132 13 Eigenschaften und Indexer.... 134 13.1 Eigenschaften... 134 13.2 Indexer... 137 14 Interfaces... 139 14.1 Grundlagen... 139 14.2 Definition... 142 14.3 Verwendung... 143

14.4 Polymorphie... 151 14.5 Explizite Implementation... 157 14.6 Ableiten von Interfaces... 158 15 Geschachtelte Klassen... 160 15.1 Grundlagen... 160 15.2 Innere Klassen... 164 15.3 Innere Klassen mit einem Interface... 167 16 Exceptions... 170 16.1 Grundlagen... 170 16.2 Ausnahmehandlung... 170 16.3 Die Klasse System. Exception... 180 16.4 Das Werfen von Ausnahmen... 181 16.5 Die SchlUsselworter checked und unchecked... 183 17 Strukturen, Enumerationen und Boxing... 185 17.1 Strukturen... 185 17.2 Enumerationen... 188 17.3 Boxing... 191 18 Streams und Dateioperationen... 193 18.1 Einfiihrung... 193 18.2 Die Klasse Stream... 194 18.3 Die Klasse FileStream... 197 18.4 Die Klassen TextWriterund Streamwriter... 201 18.5 Die Klassen TextReader und StreamReader... 207 18.6 Die Klasse FileInfo und DirectoryInfo... 210 18.7 Die Klassen BinaryReader und BinaryWriter... 217 18.8 Die Klassen BufferedStream und MemoryStream... 220 19 Attribute... 226 19.1 Metadaten... 226 19.2 Verwendung von Attributen... 228 20 Delegaten und Ereignisse... 233 20.1 Einfiihrung und Motivation... 233 20.2 Definition und Verwendungsweise eines Delegaten... 238 20.3 Ereignisse... 250 21 GrundzUge der Windowsprogrammierung... 259 21.1 Einfiihrung in graphische Benutzeroberflachen und Windowsanwendungen... 259 21.2 Ereignissteuerung... 263 21.3 Graphische Steuerelemente... 266 21.4 Modale Dialogfenster... 271 9

10 Inhaltsverzeichnis 22 23 21.5 21.6 21.7 21.8 Mentis... 282 Maus- und Tastaturereignisse... 286 Die Ereignisse Load und Paint und die Klasse Graphics.. 299 Benutzerdefinierte Steuerelemente... 317 Vergleich mit den Sprachen c++ und Java... 325 Stichwortverzeichnis... 328