lehrerbibliothek.deDatenschutzerklärung
C# IT-Tutorial
C#
IT-Tutorial




Herbert Schildt

mitp-Verlag
EAN: 9783826608346 (ISBN: 3-8266-0834-8)
608 Seiten, paperback, 18 x 24cm, Mai, 2002

EUR 27,00
alle Angaben ohne Gewähr

Umschlagtext
Mit diesem Tutorial erhalten Sie eine systematische und praxisnahe Einführung in C#, die neue Sprache von Microsoft für .NET-Entwickler. Herbert Schildt erläutert zunächst, wie Sie C# zusammen mit dem .NET Framework einsetzen und Ihr erstes C#-Programm erstellen, kompilieren und starten. Daraufhin werden alle Kernbereiche von C# detailliert behandelt und mit zahlreichen Beispielen angewendet: Kontrollanweisungen, Datentypen, Arrays, Strings, Klassen, Objekte, Methoden und Namensräume. Schritt für Schritt können Sie sich in anspruchsvollere Themen einarbeiten wie die Ausnahmebehandlung, das Ein/Ausgabe-System, Eigenschaften, Delegates, Indexer und Ereignisse. Am Ende des Tutorials werden Sie leistungsfähige Programme schreiben können und über solides Grundlagenwissen der C#-Programmierung verfügen.

Herbert Schildt ist weltweit führender Autor von Fachbüchern für Programmierer und Experte auf den Gebieten C/C++, Java und C#.





Das Konzept der Tutorials ist für das praxisnahe, schrittweise und strukturierte Erlernen von C# ausgelegt und zeichnet sich durch folgende Elemente aus:



• Modulares Lernen: In sich geschlossene Lerneinheiten mit klar formulierten Lernzielen

• Fragen an den Experten: Fragen zu weiterführenden Aspekten, die der Vertiefung Ihres Wissens dienen

• 1-Minuten-Tests: Zur Festigung Ihrer Kenntnisse werden Themenschwerpunkte zwischendurch abgefragt

• Kommentierter Quellcode, der die wesentlichen Stellen erläutert

• Projekte: Jedes Kapitel enthält mehrere Projekte, in denen gezeigt wird, wie Sie das Gelernte anwenden können. Die Ausführung wird schrittweise erläutert.

• Übungsaufgaben: Am Ende jedes Kapitels wird Ihr Wissen anhand von Aufgaben getestet, die u.a. auch das Schreiben von Code erfordern. Die dazugehörigen Lösungen finden Sie im Anhang.

• Alle Quellcode-Beispiele können Sie sich kostenlos aus dem Web downloaden!
Inhaltsverzeichnis
Vorwort 13

1 Die Grundlagen von C# 17

Der Stammbaum von C# 18
C - der Auftakt zum modernen Zeitalter der Programmierung 19
Die Entwicklung von OOP und C++ 20
Das Internet und Java tauchen auf 20
Die Erschaffung von C # 22
Die Beziehung zwischen C# und .NET Framework 24
Was ist .NET Framework? 24
Wie die Common Language Runtime arbeitet 25
Verwalteter und nicht verwalteter Code 26
Die Common Language Specification (CLS) 26
Objektorientierte Programmierung 27
Kapselung 29
Polymorphie 30
Vererbung 30
Das erste einfache Programm 32
Verwenden von csc.exe, dem Befehlszeilencompiler von C# 32
Microsoft Visual Studio.NET 7.0 verwenden 34
Das erste Beispielprogramm wird Zeile für Zeile erklärt 37
Der Umgang mit Syntaxfehlern 41
Eine kleine Änderung 42
Das zweite einfache Programm 43
Noch ein Datentyp 46
Projekt 1.1: Die Umwandlung von Fahrenheit in Celsius 48
Zwei Kontrollstrukturen 50
Die if-Anweisung 50
Die for-Schleife 52
Codeblöcke 54
Semikolons und Zeilenaufbau 55
Einrückungen 56
Projekt 1.2: Wir verbessern das Programm zur Temperaturumwandlung 57
Die C#-Schlüsselwörter 59
Bezeichner 59
Die C #-Klassenbibliothek 60
Übungsaufgaben 61


2 Datentypen und Operatoren 63

Weshalb Datentypen so wichtig sind 64
Werttypen in C # 64
Integer 65
Gleitkommatypen 68
Der Typ decimal 69
Zeichen 70
Der Typ bool 72
Optionen zur Bildschirmausgabe 73
Projekt 2.1: Kontakt mit Mars! 76
Literale 78
Hexadezimale Literale 79
Escape-Sequenzen 79
String-Literale 80
Variablen näher betrachtet 83
Initialisierung einer Variablen 83
Dynamische Initialisierung 84
Gültigkeitsbereich und Lebensdauer von Variablen 85
Operatoren 89
Arithmetische Operatoren 89
Inkrementieren und Dekrementieren 90
Relationale und logische Operatoren 92
Logische Shortcircuit-Operatoren 94
Projekt 2.2: Ausgabe einer Wahrheitstabelle für die logischen Operatoren 95
Der Zuweisungsoperator 98
Zusammengesetzte Zuweisungen 99
Typumwandlungen in Zuweisungen 100
Das Casten inkompatibler Typen 101
Die Rangfolge der Operatoren 103
Ausdrücke 104
Typumwandlung in Ausdrücken 104
Leerzeichen und Klammern 107
Projekt 2.3: Berechnung einer Kreditrückzahlung 108
Übungsaufgaben 111


3 Kontrollanweisungen 113

Die Zeicheneingabe über die Tastatur 114
Die if-Anweisung 115
Das geschachtelte if 117
Die if-else-if-Leiter 118
Die switch-Anweisung 120
Geschachtelte switch-Anweisungen 125
Projekt 3.1: Aufbau eines C#-Hilfesystems 126
Die for-Schleife 129
Einige Varianten der for-Schleife 131
Fehlende Teile 132
Schleifen ohne Anweisungsteil 134
Deklaration von Schleifensteuervariablen innerhalb der for-Schleife 135
Die while-Schleife 136
Die do-while-Schleife 138
Projekt 3.2: Das C#-Hilfesystem wird verbessert 141
Mit break eine Schleife verlassen 143
continue 146
goto 146
Projekt 3.3: Das C#-Hilfesystem wird fertig gestellt 148
Geschachtelte Schleifen 152
Übungsaufgaben 153


4 Klassen, Objekte und Methoden - Einführung 155

Grundlagen der Klasse 156
Die allgemeine Form einer Klasse 156
Eine Klasse definieren 158
Wie Objekte erzeugt werden 162
Verweisvariablen und Zuweisung 164
Methoden 165
Eine Methode für die Kfz-Klasse 166
Die Rückkehr von einer Methode 169
Einen Wertzurückliefern 170
Parameter verwenden 173
Eine parametrisierte Methode für Kfz 175
Projekt 4.1: Eine Hilfe-Klasse erstellen 177
Konstruktoren 183
Parametrisierte Konstruktoren 185
Ein Konstruktor für die Klasse Kfz 186
Mehr über den Operator new 187
Garbage Collection und Destruktoren 189
Destruktoren 189
Projekt 4.2: Ein Beispiel für Destruktoren 190
Das Schlüsselwort this 192
Übungsaufgaben 195


5 Weitere Datentypen und Operatoren 197

Arrays 198
Eindimensionale Arrays 198
Projekt 5.1: Ein Array sortieren 203
Mehrdimensionale Arrays 205
Zweidimensionale Arrays 206
Arrays mit drei oder mehr Dimensionen 207
Initialisierung von mehrdimensionalen Arrays 208
Irreguläre Arrays 209
Array-Verweise 212
Die Eigenschaft Length 213
Projekt 5.2: Die Klasse Queue 216
Die foreach-Schleife 220
Strings 223
Strings bilden 224
String-Operationen 225
Strings sind unveränderlich 228
Die bitweisen Operatoren 230
Die bitweisen Operatoren AND, OR, XOR und NOT 230
Die Verschiebeoperatoren 235
Bitweise Kurzzuweisungen 238
Projekt 5.3: Die Klasse ShowBits 238
Der ?-Operator 241
Übungsaufgaben 244


6 Methoden und Klassen genauer betrachtet 245

Zugriffskontrolle für Klassen-Elemente 246
Die Zugriffsmodifizierer von C# 246
Projekt 6.1: Die Queue-Klasse verbessern 252
Objekte an Methoden übergeben 254
Argumente übergeben 255
Die Parameter ref und out 258
ref 259
out 261
Argumente in variabler Anzahl 264
Objekte zurückgeben 268
Methoden überladen 270
Das Überladen von Konstruktoren 277
Aufrufen eines überladenen Konstruktors über this 279
Projekt 6.2: Überladen des Queue-Konstruktors 281
Die Methode Main() 284
Die Rückgabe von Werten aus Main() 284
Argumente an Main() übergeben 284
Rekursionen 287
static 290
Projekt 6.3: Quicksort 293
Übungsaufgaben 296


7 Operatoren überladen, Indexer und Eigenschaften 299

Überladen von Operatoren 300
Die allgemeinen Formen einer Operatormethode 301
Überladen von binären Operatoren 301
Überladen von unären Operatoren 304
Noch mehr Flexibilität 309
Überladen von relationalen Operatoren 314
Tipps und Restriktionen zum Überladen von Operatoren 316
Indexer 317
Mehrdimensionale Indexer 323
Eigenschaften 326
Restriktionen von Eigenschaften 330
Projekt 7.1: Erstellen einer Klasse Set 331
Übungsaufgaben 340


8 Vererbung 341

Grundlagen der Vererbung 342
Der Zugriff auf Elemente und die Vererbung 345
Der protected-Zugriff 349
Konstruktoren und Vererbung 350
Basisklassenkonstruktoren aufrufen 352
Vererbung und Namensausblendung 357
Mit base auf einen ausgeblendeten Namen zugreifen 358
Projekt 7.1: Die Kfz-Klasse erweitern 361
Eine mehrstufige Hierarchie einrichten 365
Wann werden Konstruktoren aufgerufen? 368
Basisklassenverweise und abgeleitete Objekte 369
Virtuelle Methoden und Überschreiben 375
Warum Methoden überschrieben werden 378
Virtuelle Methoden für TwoDShape 379
Abstrakte Klassen verwenden 383
sealed verhindert die Vererbung 388
Die Klasse object 388
Boxing und Unboxing 390
Übungsaufgaben 393


9 Schnittstellen, Strukturen und Enumerationen 395

Schnittstellen 396
Schnittstellen implementieren 397
Schnittstellenverweise 402
Projekt 9.1: Erstellen einer Queue-Schnittstelle 404
Schnittstelleneigenschaften 410
Indexer für Schnittstellen 412
Schnittstellen können vererbt werden 415
Explizite Implementierung 416
Strukturen 419
Enumerationen 422
Initialisierung einer Enumeration 424
Basistyp der Enumeration festlegen 424
Übungsaufgaben 425


10 Ausnahmebehandlung 427

Die Klasse System.Exception 428
Grundlagen der Ausnahmebehandlung 429
try und catch verwenden 429
Ein einfaches Beispiel für eine Ausnahme 430
Ein zweites Beispiel für eine Ausnahme 432
Auswirkungen einer nicht abgefangenen Ausnahme 433
Tolerante Fehlerbehandlung mit Ausnahmen 435
Mehrere catch-Anweisungen verwenden 436
Sämtliche Ausnahmen abfangen 437
Verschachtelte try-Blöcke 438
Eine Ausnahme auslösen 440
Eine Ausnahme erneut auslösen 441
finally verwenden 443
Exception genauer untersucht 445
Häufig verwendete Ausnahmen 447
Abgeleitete Ausnahme-Klassen erzeugen 448
Ausnahmen abgeleiteter Klassen abfangen 450
Projekt 10.1: Ausnahmen für die Klasse Queue 452
checked und unchecked verwenden 455
Übungsaufgaben 460


11 Das Ein-/Ausgabe-System 461

Das E/A-System in C# basiert auf Streams 462
Byte- und Character-Streams 462
Die vordefinierten Streams 463
Die Stream-Klassen 463
Die Klasse Stream 464
Die Byte-Stream-Klassen 465
Die Wrapper-Klassen für Character-Streams 465
Binäre Streams 467
Die Konsolen-E/A 468
Konsoleneingabenlesen 468
Konsoleneingaben schreiben 470
FileStream und Byte-orientierte Dateien-E/A 471
Öffnen und Schließen einer Datei 471
Bytes aus FileStream lesen 473
In eine Datei schreiben 475
Zeichenorientierte Dateiein- und -ausgabe 478
StreamWriter 478
StreamReader 481
Umleiten von Standard-Streams 482
Projekt 11.1: Ein Programm zum Vergleichen von Dateien 485
Binäre Daten lesen und schreiben 487
BinaryWriter 487
BinaryReader 488
Ein Beispiel für die binäre Ein/Ausgabe 489
Wahlfreier Dateizugriff 492
Numerische Strings in die interne Darstellung umwandeln 494
Projekt 11.2: Ein dateigestütztes Hilfesystem erstellen 499
Übungsaufgaben 506


12 Delegates, Ereignisse, Namensräume und andere fortgeschrittene Themen 507

Delegates 508
Multicasting 513
Wozu Delegates? 515
Ereignisse 516
Ein Beispiel für Ereignisse mit Multicasting 518
Namensräume 522
Namensraum deklarieren 522
using 525
Eine zweite Form von using 527
Namensräume sind additiv 528
Namensräume dürfen verschachtelt sein 530
Der Standard-Namensraum 531
Projekt 12.1: Set bekommt einen Namensraum 532
Konvertierungsoperatoren 535
Der Präprozessor 540
#define 541
#if und #endif 541
#else und #elif 543
#undef 545
#error 546
#warning 546
#line 546
#region und #endregion 547
Attribute 547
Das Attribut Conditional 548
Das Attribut Obsolete 549
Unsicherer Code 550
Ein kurzer Blick auf Zeiger 551
unsafe verwenden 554
fixed verwenden 554
Die Typidentifikation zur Laufzeit 556
Einen Typ mit is testen 556
as verwenden 557
typeof verwenden 558
Weitere Schlüsselwörter 559
Der Zugriffsmodifizierer internal 559
sizeof 559
lock 560
readonly 560
stackalloc 561
Die Anweisung using 561
const und volatile 562
Was gibt es noch zusagen? 562
Übungsaufgaben 563


A Antworten auf die Übungsaufgaben 565

Kapitel 1: Die Grundlagen von C# 566
Kapitel 2: Datentypen und Operatoren 568
Kapitel 3: Kontrollanweisungen 570
Kapitel 4: Klassen, Objekte und Methoden - Einführung 574
Kapitel 5: Weitere Datentypen und Operatoren 575
Kapitel 6: Methoden und Klassen genauer betrachtet 578
Kapitel 7: Operatoren überladen, Indexer und Eigenschaften 583
Kapitel 8: Vererbung 585
Kapitel 9: Schnittstellen, Strukturen und Enumerationen 587
Kapitel 10: Ausnahmebehandlung 590
Kapitel 11: Das Ein/Ausgabe-System 593
Kapitel 12: Delegates, Ereignisse, Namensräume und andere fortgeschrittene Themen 596

Stichwortverzeichnis 598
Weitere Titel aus der Reihe Do IT Yourself