mk-prg-net \net \ cs \intro \blockstructure

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:

  1. Datenstrukturen (z.B. Vector)
  2. Unterprogramme (z.B. Add(...))
  3. 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:

  1. dem Namespaceblock, der den Sichtbarkeitsbereich von Klassennamen einschränkt
  2. 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.