Advanced  Services Programmaufbau


Der Klassenrahmen

Ein C#-Programm besteht zunächst aus einer Datei mit einer Klasse, deren Name nach dem reservierten Wort class angegeben werden muß.

class Name_der_Klasse
{

}

Der Name der Klasse ist innerhalb gewisser Grenzen frei wählbar. Da C# wie C und C++ case-sensitiv ist, wird zwischen Groß- und Kleinschreibung unterschieden, also sind etwa

Name_der_Klasse   und   Name_der_KLASSE

zwei verschiedene Namen für Klassen. Unterstriche (underscore) sind zulässig, nicht jedoch Bindestriche und Sonderzeichen. Man kann ohne weiteres mehrere Klassen in einer Datei unterbringen. Eine gute Angewohnheit ist jedoch die Faustregel:

eine Klasse = eine Datei

Diese sogenannte Quellcodedatei oder Sourcecodedatei muß die Endung ".cs" aufweisen. Im Gegensatz zu Java muß der Dateiname nicht identisch mit dem Namen der Klasse sein. Da man C#-Entwicklungen meist mit der Entwicklungsumgebung VisualStudio durchführt, geschieht dies durch die Projektverwaltung automatisch. Diese bettet die Klasse auch automatisch in einen Namensraum (namespace) ein. Ein Namensraum ist ein Art Familienname für alle Klassen die er beherbergt.

Beginnen Sie den Namen einer Klasse immer mit einem großen Buchstaben, das ist eine von allen Profis in der Praxis eingehaltene Konvention.

Die geschweiften Klammern { und } heißen Blockklammern und treten wie alle Klammern immer paarweise auf und stehen in diesem Fall für Beginn und Ende der Klasse. Die Frage, was eine Klasse genau ist, stellen wir zunächst mal hinten an, merken uns aber schon, daß eine Klasse ein spezieller Datentyp ist. Datentypen werden im nächsten Kapitel beschrieben. Zunächst reicht es zu wissen, daß eine Klasse mit dem reservierten Wort class beginnt, einen Namen trägt und ein Paar geschweifter Klammern besitzt.


Die Main-Methode

Innerhalb der Klasse befindet sich die Main-Methode. Auch hier braucht man sich am Anfang über deren Aufbau keine großen Gedanken machen und einfach akzeptieren, daß sich das Leben unserer ersten Programme innerhalb der Main-Methode abspielt. Es gibt zwei Ausprägungen der Main-Methode. Die einfache Form sieht wie folgt aus.

class Name_der_Klasse
{
   public static void Main()
   {


   } // end Main

} // end class Name_der_Klasse

Falls man einem Konsolpragramm Parameter mitgeben will die das Programm auswerten soll, braucht man die folgende Signatur.

class Name_der_Klasse
{
   public static void Main(string[] args)
   {


   } // end Main

} // end class Name_der_Klasse

oder auch

using System;

class Name_der_Klasse
{
   public static void Main(String[] args)
   {


   } // end Main

} // end class Name_der_Klasse

Hier tauchen drei weitere reservierte Worte auf, nämlich public, static, void, deren Bedeutung später im Zusammenhang mit Methoden und Klassen genau erklärt werden wird. Main ist zwar kein reserviertes Wort, trotzdem ist seine Bedeutung genau festgelegt und dürfen hier nicht verändert werden. string wiederum ist die Abkürzung für System.String und nicht etwa nur für string. Mit using System; machen wir dem Compiler eine Sammlung wichtiger Klassen bekannt, die wir ständig brauchen. Für args könnten wir auch einen anderen Namen verwenden, aber es gibt keinen vernünftigen Grund dafür, also tun wir es auch nicht. Programmierer, die von C oder C++ herkommen, wundern sich vielleicht über die Stellung der eckigen Klammern. Für die Stellung der eckigen Klammern gibt es in C# im gegensatz zu Java keine andere Variante.

Wir haben nun bereits ein ablauffähiges Programm, das aber weder Ein- noch Ausgabe hat und daher nicht sonderlich attraktiv ist. Beachten Sie, daß hier bereits alle Formen von Klammern vorkommen, die C# zu bieten hat, geschweifte, runde, und eckige. Die Bedeutung der beiden letzteren wird noch zu klären sein. Wie immer treten alle Formen von Klammern paarweise auf.

Der zweimalige Vorwärts-slash leitet einen einzeiligen Kommentar ein. Demzufolge endet der Kommentar mit dem Zeilenende. Es ist eine gute Angewohnheit, sich durch einen Kommentar klarzumachen, welche Funktion die beiden schließenden geschweiften Klammern haben.

Wir nähern uns allmählich unserem ersten C#-Programm, dem Pendant zum berühmten "Hello World" Programm in C. Wir brauchen noch einen Befehl, der eine Ausgabe auf die Konsole ermöglicht. Diese Zeile ist im folgenden ergänzt.

using System;

class UnserErstes
{
   public static void Main(String args[])
   {
      Console.WriteLine("Hello C#");
      // Ausgabe von Hello C# auf die Konsole
   } // end Main

} // end clas

In der ergänzten Zeile rufen wir ein Unterprogramm auf, daß die C#-Entwickler für uns geschrieben haben und übergeben ihm die Zeichenkette "Hello C#". So eine Zeichenkette nennen wir in Zukunft String. Das Unterprogramm sorgt dann für die Ausgabe dieser Zeichenkette auf die Konsole. Das Unterprogramm hat den vollständigen Namen Console.WriteLine, dabei ist WriteLine der Namen des Unterprogramms. Statt Unterprogramm sagen wir in Zukunft Methode. Gelegentlich sprechen wir auch von Memberfunktion. Eigentlich ist dieser Name der treffendere, aber mittlerweile hat sich der Name Methode für die objektorientierte Variante von Unterprogrammen durchgesetzt. Nichtobjektorientierte Unterprogramme heißen Funktionen. Einen ersten Einstieg in Klassen und Methoden und den Unterschied zwischen Funktionen und Methoden findet man hier:
Erster Kontakt mit Klassen


Kommentare

Es gibt in C# zwei Arten von Kommentaren, einen einzeiligen Kommentar und einen mehrzeiligen Kommentar.

using System;

class UnserErstes
{
   public static void Main()
   {
      Console.WriteLine("Irgendein Text");
      /* Die Anweisung Console.WriteLine("Irgendein Text") gibt
      die Zeichenfolge Irgendein Text auf die Konsole aus */

   } // end Main

} // end Main class

Dieser Kommentar kann nicht geschachtelt werden. Daher empfiehlt es sich, vorzugsweise den einzeiligen Kommentar zu verwenden, auch wenn man zwei oder drei Zeilen Kommentar hat, also lieber

// Kommentarzeile 1
// Kommentarzeile 2
// Kommentarzeile 3

statt

/* Kommentarzeile 1
Kommentarzeile 2
Kommentarzeile 3 */

Es ist ganz normal, daß man bei der Programmentwicklung ganze Programmblöcke auskommentieren muß, weil sie fehlerhaft oder noch nicht fertig kodiert sind. Hat man dann für die kurzen Kommentare den einzeiligen Kommentar verwendet, so kann man problemlos die größeren Passagen auskommentieren.


Einrückungen

Es gibt zwei Weltanschauungen, was die Form eines Programms betrifft. Die einen schreiben

class UnserErstes {
   public static void Main(String args[]) {
      Console.WriteLine("Hello C-sharp");
      /* Die öffnende geschweifte Klammer steht am Schluß, dadurch
         spart man eine Zeile, aber die zugehörigen Klammerpaare sind
         schwerer zuzuordnen */

   } // end Main

} // end Main class

und die anderen

class UnserErstes
{
   public static void Main(String args[])
   {
      Console.WriteLine("Hello C-sharp");
      /* Die öffnende und schließende geschweifte Klammer stehen immer
         alleine in einer Zeile und in gleicher Einrücktiefe. So wird
         optisch sofort klar, welche Klammerpaare zusammengehören */

   } // end Main

} // end Main class

Hier wird offensichtlich die zweite Form bevorzugt; sie braucht zwar pro Klammerpaar eine Zeile mehr Platz, ist aber dafür deutlich übersichtlicher. Man erkennt sofort, welche geschweiften Klammern zusammengehören, wenn man sich an die folgenden Regeln hält.


Escape-Sequenzen

Mit Console.WriteLine("Hello C-sharp") können wir den Text "Hello C-sharp" ausgeben, allerdings ohne die Anführungszeichen, da die Anführungszeichen einen Textstring begrenzen. Was ist, wenn wir die Anführungszeichen selbst ausgeben wollen? Dieses kleine Problem lösen die sogenannten ESCAPE-Sequenzen. Ein einleitender backslash "entwertet" das folgende Zeichen, so kann man etwa mit \" ein Anführungszeichen ausgeben. Hier eine kleine Liste von ESCAPE-Sequenzen, die man zur Ausgabe auf die Konsole immer mal wieder braucht.

Escape-SequenzBedeutung
\bbackspace
\nnewline
\rcarriage return
\tTabulator
\'Einfaches Anführungszeichen
\"Doppeltes Anführungszeichen
\\backslash


Editoren

Es ist auch möglich C#-Programm mit einem schlichten ASCII-Editor zu schreiben und den C#-Compiler über die Konsole aufzurufen. Da man aber mit der ExpressEdition des Visualstudio eine kostenlose Entwicklungsumgebung zur Verfügung gestellt bekommt, die nur wenig Einschränkungen gegenüber der Vollversion aufweist entwickelt man in der Regel praktisch immer mit Visualstudio.


Übungen

Einfache Ausgaben auf die Konsole

Ausgaben auf die Konsole mit Escape-Sequenzen