29.04.2014 Aufrufe

Leseprobe

Leseprobe

Leseprobe

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Kapitel 1 • Einführung in C# 21<br />

gleichermaßen vom NGWS-Laufzeitsystem gestellt. Die spitzfindigen HRESULT-<br />

Werte von C++ haben ausgedient, die Fehlerbehandlung auf der Basis von Ausnahmen<br />

wird in C# zu einem robusten Mittel für den Programmieralltag.<br />

Im Zeitalter der globalen Vernetzung ist Sicherheit zu einer zentralen Anforderung<br />

für Programmiersprachen geworden – insbesondere für solche, die für sich<br />

das Attribut »modern« in Anspruch nehmen wollen. C# lässt Sie hier nicht im<br />

Regen stehen: Die Sprache bietet von der Syntax her in Form der sogenannten<br />

Metadaten Unterstützung für das zentrale Sicherheitsmodell der NGWS-Laufzeitumgebung.<br />

Eine detailliertere Diskussion dieses Konzepts finden Sie gleich im<br />

nächsten Kapitel.<br />

1.1.3 Objektorientiert<br />

Ein Verzicht auf Objektorientierung dürfte so ziemlich das Letzte sein, was man<br />

heute von einer neuen Programmiersprache erwartet, oder? Selbstverständlich<br />

unterstützt C# sämtliche Schlüsselkonzepte der objektorientierten Programmierung,<br />

darunter Features wie Verkapselung, Vererbung und Polymorphie. Das<br />

gesamte in C# vorgegebene Klassenmodell gründet auf das von der NGWS-Laufzeitumgebung<br />

bereitgestellte virtuelle Objektsystem (VOS), das im nächsten<br />

Kapitel genauer beschrieben wird. Mit anderen Worten, das Objektmodell ist nun<br />

Bestandteil der Infrastruktur und nicht mehr nur der Programmiersprache.<br />

Wie Sie gleich zu Anfang bemerken werden, wenn Sie sich mit der Sprache als<br />

solcher auseinandersetzen, gibt es keine globalen Funktionen, Variablen und Konstanten<br />

mehr. Alles muss in einer Klasse enthalten sein – entweder als statisches<br />

Element (zu einem Typ gehörig) oder als dynamisches Element (zur Instanz eines<br />

Typs gehörig). Das verbessert nicht nur die Lesbarkeit Ihres Codes, sondern beugt<br />

auch potenziellen Namenskonflikten vor.<br />

Die Methoden einer Klasse sind standardmäßig nicht virtuell, das heißt, sie lassen<br />

sich in einer abgeleiteten Klasse nicht überschreiben. Der Hintergedanke dabei<br />

ist, das unbeabsichtigte Überschreiben von Methoden zu verhindern. Damit eine<br />

Methode überschrieben werden kann, muss sie explizit mit dem Modifizierer virtual<br />

deklariert sein. Das hält nicht nur den Umfang der virtuellen Methodentabelle<br />

(vtable) klein, sondern garantiert auch, dass sich Ihr Code versionsgerecht<br />

verhalten kann.<br />

Wer von C++ kommt, ist es gewohnt, die Sichtbarkeit von Elementen über<br />

Zugriffsmodifizierer zu gestalten. Diese Modifizierer, private, protected und<br />

public, finden Sie natürlich auch in C#. Darüber hinaus kennt C# aber noch einen<br />

vierten Modifizierer: internal. Details dazu diskutiert Kapitel 5, »Klassen«.<br />

Haben Sie in C++ jemals bewusst eine Klasse von mehreren Basisklassen abgeleitet?<br />

(ATL-Programmierer bitte weghören, Ihre Stimme zählt hier nicht!) In fast<br />

allen Fällen kommt man mit einer einzige Basisklasse aus. Und wenn man doch

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!