Einführung in das Programmieren mit C# 6 - uni-trier.de · PDF fileVorwort Dieses Manuskript entstand als Begleitlektüre zum C# - Einführungskurs, den das Zentrum für In-formations-,

Embed Size (px)

Citation preview

  • Bernhard Baltes-Gtz

    Einfhrung in das

    Programmieren mit

    C# 6

    2017 (Rev. 170515)

  • Herausgeber: Zentrum fr Informations-, Medien- und Kommunikationstechnologie (ZIMK)

    an der Universitt Trier

    Universittsring 15

    D-54286 Trier

    WWW: zimk.uni-trier.de

    E-Mail: [email protected]

    Autor: Bernhard Baltes-Gtz

    WWW: https://www.uni-trier.de/~baltes

    E-Mail: [email protected]

    Copyright 2017; ZIMK

    http://www.uni-trier.de/index.php?id=518mailto:[email protected]://www.uni-trier.de/~baltesmailto:[email protected]
  • Vorwort

    Dieses Manuskript entstand als Begleitlektre zum C# - Einfhrungskurs, den das Zentrum fr In-

    formations-, Medien- und Kommunikationstechnologie (ZIMK) an der Universitt Trier im Winter-

    semester 2016/2017 angeboten hat, sollte aber auch fr das Selbststudium geeignet sein.

    Lerninhalte und -ziele

    C# ist eine von der Firma Microsoft fr das .NET - Framework entwickelte und von der ECMA1

    standardisierte Programmiersprache, die auf den Vorbildern C++ (siehe z.B. Baltes-Gtz 2003) und

    Java (siehe z.B. Baltes-Gtz & Gtz 2016) aufbaut, aber auch etliche Weiterentwicklungen bietet.

    Das .NET - Framework hat sich als Standard fr die Softwareentwicklung unter Windows etabliert

    und ist durch das Open Source - Projekt Mono erfolgreich auf andere Betriebssysteme (Linux,

    MacOS X) portiert worden.2 Neben Mono entwickelt gerade das von Microsoft betriebene Open

    Source - Projekt .NET Core eine Plattform-unabhngige, unter Linux, Mac OS X und Windows

    verfgbare .NET - Variante. Derzeit (April 2017) werden das .NET - Framework (aktuelle Version:

    4.6) und .NET Core (aktuelle Version: 1.1) parallel entwickelt. Im Kurs wird dem ausgereifteren

    .NET Framework, das fr alle aktuellen Windows-Versionen inklusive graphischer Bedienoberfl-

    che verfgbar ist, der Vorzug gegeben.

    Von der Firma Xamarin, die einst die Mono-Entwicklung initiiert hat und mittlerweile von Micro-

    soft bernommen worden ist, stammt ein attraktiver Ansatz zur Entwicklung mobiler Apps fr And-

    roid, iOS und Windows Phone in C#.3

    Ein Vorteil des .NET - Frameworks ist die freie Wahl zwischen verschiedenen Programmierspra-

    chen, doch kann C# trotz der groen Konkurrenz als die bevorzugte .NET - Programmiersprache

    gelten. Schlielich wurde das Framework selbst berwiegend in C# entwickelt.

    Wenngleich die Netzorientierung im Namen des neuen Software-Frameworks stark betont wird, ist

    C# wie jede andere .NET - Programmiersprache universell einsetzbar. Das Manuskript behandelt

    wesentliche Konzepte und Methoden der objektorientierten Softwareentwicklung (z.B. elementare

    Sprachelemente, Klassen, Vererbung, Polymorphie, Schnittstellen) und bercksichtigt viele Stan-

    dardthemen der Programmierpraxis (z.B. grafische Benutzeroberflchen, Ausnahmebehandlung,

    Dateizugriff, Multithreading).

    Voraussetzungen bei den Kursteilnehmern

    Programmierkenntnisse werden nicht vorausgesetzt. Teilnehmer mit Programmiererfahrung werden sich in den ersten Kapiteln eventuell etwas

    langweilen. Fr diesen Personenkreis enthlt das Manuskript einige Vertiefungen (mit ent-

    sprechender Kennzeichnung in der berschrift), die von Einsteigern gefahrlos bersprungen

    werden knnen.

    Motivation Es ist mit einem erheblichen Zeitaufwand bei der Lektre und bei der aktiven Auseinander-

    setzung mit dem Stoff (z.B. durch das Lsen von bungsaufgaben) zu rechnen. Als Gegen-

    leistung kann man hochrelevante Techniken erlernen und viel Spa erleben.

    1 Ursprnglich stand EMCA fr European Computer Manufacturers Association, doch wurde diese Bedeutung abge-

    legt, um den nunmehr globalen Anspruch der Organisation zu dokumentieren (siehe z.B. http://www.ecma-

    international.org/). 2 Webseite des Projekts: http://www.mono-project.com/

    Zu Details der Entstehungsgeschichte von Mono siehe https://en.wikipedia.org/wiki/Mono_(software) 3 https://www.xamarin.com/

    http://www.ecma-international.org/http://www.ecma-international.org/http://www.mono-project.com/https://en.wikipedia.org/wiki/Mono_(software)https://www.xamarin.com/
  • Vorwort

    IV

    Software zum ben

    Fr die unverzichtbaren bungen sollte ein Rechner mit einer aktuellen C# - Entwicklungsumge-

    bung zur Verfgung stehen, z.B. die kostenlose Community-Variante von Microsofts Visual Studio

    2015. Das ebenfalls erforderliche .NET - Framework ist auf jedem Rechner unter Windows Vista,

    7, 8.x oder 10 als Bestandteil des Betriebssystems vorhanden und wird vom Visual Studio 2015 bei

    Bedarf auf die Version 4.6 aktualisiert.

    Dateien zum Manuskript

    Die aktuelle Version dieses Manuskripts ist zusammen mit den behandelten Beispielen und L-

    sungsvorschlge zu vielen bungsaufgaben auf dem Webserver der Universitt Trier von der Start-

    seite (http://www.uni-trier.de/) ausgehend folgendermaen zu finden:

    Rechenzentrum > Studierende > EDV-Dokumentationen >

    Programmierung > Einfhrung in das Programmieren mit C#

    Leider blieb zu wenig Zeit fr eine sorgfltige Kontrolle des Textes, so dass einige Fehler und

    Mngel verblieben sein drften. Entsprechende Hinweise an die E-Mail-Adresse

    [email protected]

    werden dankbar entgegen genommen.

    Trier, im April 2017 Bernhard Baltes-Gtz

    http://www.uni-trier.de/http://www.uni-trier.de/index.php?id=22777http://www.uni-trier.de/index.php?id=22777mailto:[email protected]
  • Inhaltsverzeichnis

    VORWORT III

    1 EINLEITUNG 1

    1.1 Beispiel fr die objektorientierte Softwareentwicklung mit C# 1 1.1.1 Objektorientierte Analyse und Modellierung 1 1.1.2 Objektorientierte Programmierung 7 1.1.3 Algorithmen 9 1.1.4 Startklasse und Main() - Methode 10 1.1.5 Ausblick auf Anwendungen mit grafischer Benutzerschnittstelle 12 1.1.6 Zusammenfassung zu Abschnitt 1.1 13

    1.2 Das .NET - Framework 13 1.2.1 berblick 14 1.2.2 Installation 15 1.2.3 C# - Compiler und CIL 17 1.2.4 Common Language Specification 19 1.2.5 Assemblies und Metadaten 19

    1.2.5.1 Typ-Metadaten 20 1.2.5.2 Manifest mit Assembly-Metadaten 21 1.2.5.3 Multidatei-Assemblies 21 1.2.5.4 Private und globale Assemblies 22 1.2.5.5 Plattformspezifische Assemblies 23 1.2.5.6 Vergleich mit der COM-Technologie 25

    1.2.6 CLR und JIT-Compiler 25 1.2.7 FCL und Namensrume 27 1.2.8 Zusammenfassung zu Abschnitt 1.2 30

    1.3 .NET Core 31

    1.4 bungsaufgaben zu Kapitel 1 32

    2 WERKZEUGE ZUM ENTWICKELN VON C# - PROGRAMMEN 33

    2.1 C# - Entwicklung mit Texteditor und Kommandozeilen-Compiler 33 2.1.1 Editieren 33 2.1.2 bersetzen in CIL 35 2.1.3 Ausfhren 38 2.1.4 Programmfehler beheben 39

    2.2 Microsoft Visual Studio 2015 Community 40 2.2.1 Installation 41

    2.2.1.1 Voraussetzungen 41 2.2.1.2 Bezugsquelle 41 2.2.1.3 Web-Installer 42

    2.2.2 Initialisierung und Registrierung 45 2.2.3 Ein erstes Konsolen-Projekt 47 2.2.4 Eine erste GUI-Anwendung 51

    2.2.4.1 Projekt anlegen 51 2.2.4.2 Bedienoberflche entwerfen 54 2.2.4.3 Behandlungsmethode zum Click-Ereignis des Befehlsschalters erstellen 57 2.2.4.4 Testen und verbessern 61

    2.2.5 FCL-Dokumentation und andere Hilfeinhalte 62 2.2.6 Compiler-Optionen in der Entwicklungsumgebung setzen 64

    2.2.6.1 Referenzen 64 2.2.6.2 Ausgabetyp 67 2.2.6.3 Zielplattform 67

  • Inhaltsverzeichnis

    VI

    2.3 bungsaufgaben zu Kapitel 2 69

    3 ELEMENTARE SPRACHELEMENTE 71

    3.1 Einstieg 71 3.1.1 Aufbau von einfachen C# - Programmen 71 3.1.2 Syntaxdiagramm 72

    3.1.2.1 Klassendefinition 73 3.1.2.2 Methodendefinition 74 3.1.2.3 Eigenschaftsdefinition 75

    3.1.3 Hinweise zur Gestaltung des Quellcodes 76 3.1.4 Kommentar 77 3.1.5 Namen 78 3.1.6 bungsaufgaben zu Abschnitt 3.1 80

    3.2 Ausgabe bei Konsolenanwendungen 80 3.2.1 Ausgabe einer (zusammengesetzten) Zeichenfolge 81 3.2.2 Formatierte Ausgabe 82

    3.2.2.1 Traditionelle Variante mit Platzhaltern 82 3.2.2.2 Zeichenfolgeninterpolation 83

    3.2.3 bungsaufgaben zu Abschnitt 3.2 84

    3.3 Variablen und Datentypen 84 3.3.1 Strenge Compiler-berwachung bei C# - Variablen 85

    3.3.1.1 Explizite Deklaration 85 3.3.1.2 Statische Typisierung 86 3.3.1.3 Initialisierung 87

    3.3.2 Wert- und Referenztypen 87 3.3.3 Klassifikation der Variablen nach Zuordnung 88 3.3.4 Elementare Datentypen 90 3.3.5 Vertiefung: Darstellung von Gleitkommazahlen im Arbeitsspeicher des Computers 92

    3.3.5.1 Binre Gleitkommadarstellung 92 3.3.5.2 Dezimale Gleitkommadarstellung 94

    3.3.6 Variablendeklaration, Initialisierung und Wertzuweisung 96 3.3.7 Blcke und Deklarationsbereiche fr lokale Variablen 98 3.3.8 Konstanten 99 3.3.9 Literale 100

    3.3.9.1 Ganzzahlliterale 101 3.3.9.2 Gleitkommaliterale 102 3.3.9.3 bool-Literale 103 3.3.9.4 char-Literale 104 3.3.9.5 Zeichenkettenliterale 105 3.3.9.6 Referenzliteral null 106

    3.3.10 bungsaufgaben zu Abschnitt 3.3 106

    3.4 Einfache Techniken fr Benutzereingaben 107 3.4.1 Via Konsole 107 3.4.2 Via InputBox 108

    3.5 Operatoren und Ausdrcke 110 3.5.1 Arithmetische Operatoren 111 3.5.2 Methodenaufruf 114 3.5.3 Vergleichsoperatoren 115 3.5.4 Vertiefung: Gleitkommawerte vergleichen 117 3.5.5 Logische Operatoren 119 3.5.6 Vertiefung: Bitorientierte Operatoren 121 3.5.7 Typumwandlung (Casting) bei elementaren Datentypen 122

    3.5.7.1 Implizite Typanpassung 122 3.5.7.2 Explizite Typkonvertierung 123

    3.5.8 Zuweisungsoperatoren 125 3.5.9 Konditionaloperator 127

  • Inhaltsverzeichnis

    VII

    3.5.10 Auswertungsreihenfolge 128 3.5.10.1 Regeln 128 3.5.10.2 Operatorentabe