Grundlegende Blockstruktur von C#
C# ist blockstrukturiert wie viele andere Programmiersprachen auch. Blöcke zerlegen den Code in disjunkte Abschnitte. Wie in der prozeduralen Programmierung definieren Blöcke:
- Datenstrukturen (z.B. Vector)
- Unterprogramme (z.B. Add(...))
- Kontrollstrukturen wie Verzweigungen, Schleifen etc.
Blöcke können Blöcke enthalten. Der Bereich innerhalb eines Blockes wird auch als Scope
(Sichtbarkeitsbereich) bezeichent.
C# Programme haben stets eine Grundstruktur, bestehend aus zwei ineinander verschachtelten Blöcken:
- dem Namespaceblock, der den Sichtbarkeitsbereich von Klassennamen einschränkt
- dem Klassen- oder Strukturblock, innerhalb dessen die Definition von Variablen und Prozeduren möglich ist
// Alle Klassen müssen stets in mind. einem Namespace eingeschlossen sein namespace app { // Alle Variablen und Prozeduren müssen in mind. einer Klasse eingeschlossen sein class MyApp { // Deklaration einer "globalen" Variable public static void VectorSet Punktwolke = new ...; // Deklaration einer Prozedur public static void Main() {...} } }
Einbettung der prozeduralen Programmierung
In der klassischen prozeduralen Programmierung werden Daten und Prozeduren, die auf ihnen operieren, voneinander strikt getrennt. Eine Prozedur, durch welche die Einzahlung eines Betrages auf einem Konto implementiert wird, muss das zu aktualisierende Konto als Parameter übergeben werden:
In der objektorientierte Programmierung werden Daten und die auf ihnen operierenden Prozeduren
in einem Objekt zusammengefasst. Soll auf einem Konto von Donald ein Betrag eingezahlt werden, dann
wird die DonaldsKonto.einzahlen(Betrag)
Methode über das Konto- Objekt aufgerufen, wobei lediglich
der Betrag als Parameter zu übergeben ist:
Der Kompiler wandelt die objektorientierte Form beim Kompilieren wieder in die prozedurale um.