Klassen und Module in Pascal am Beispiel Ampel

 

Unter einer Klasse versteht man in der objektorientierten Programmierung einen Bauplan für ein Objekt. Beispielsweise kann eine Klasse einen Bauplan für eine Ampel darstellen. Die konkrete Ampel ist dann ein Exemplar dieser Klasse, also ein Objekt, das entsprechend dem Bauplan hergestellt wurde und daher auch entsprechend funktioniert.

Klassen werden in Pascal (unter Delphi) in sogenannten Modulen (engl. units) abgelegt. In einem Modul können eine (oder mehrere) Klassen definiert werden. Es hat folgenden Aufbau:

  • Name des Moduls
    Wir bezeichnen Module mit einem kleinen m als Anfangsbuchstaben, etwa "mAmpel".
    Der Name des Moduls muss ferner mit dem Dateinamen der Unit übereinstimmen. 
  • Schnittstellen - Teil des Moduls (interface)
    Hier wird der Name der Klasse angegeben und gesagt, welche Eigenschaften  (Attribute) Objekte dieser Klasse  besitzen und was Objekte dieser Klasse  können (Dienste). Weiterhin gibt man hier an, welche anderen Module ggf. benötigt werden.
  • Implementations - Teil des Moduls (implementation)
    Hier werden angegeben, wie die Dienste arbeiten, d.h. ihre Methoden werden beschrieben.

Module in Pascal

Ein Modul in Pascal (unter der Entwicklungsumgebung Delphi) hat folgenden Aufbau :

 

 

Modulname

unit <Name des Moduls = 'm'+Klassenname>;

Schnittstellen-Teil

interface
         
uses <benötigte Module>;
         
type <'T'+ eigentlicher Klassenname> = class <ggf. Name der Oberklasse>

     private 
        <Objektbezeichner> : <Klassenname>;
        <Name der Zustangsvariablen> : <Typ der Variablen>;

     public
        constructor <Initialisierungsnachricht>(Parameterliste); 
        procedure <Auftrag>(Parameterliste);
        function <Anfrage>(Parameterliste) : <Ergebnistyp>;
        destructor <Freigabenachricht>(Parameterliste);
         
end;
         

Implementations-Teil

implementation
         
constructor <Klassenname>.<Initialisierungsnachricht>;
begin
  ...
end;
         
procedure <Klassenname>.<Auftrag>;
begin
  ...
end;
         
function <Klassenname>.<Anfrage> : <Ergebnistyp> ;
begin
  ...
end;
         
destructor <Klassenname>.<Freigabenachricht>;
begin
  ...
end;
         
end.
         

Hinweise

Bitte beachten Sie folgende Hinweise:

  • Der eigentliche Name der Klasse sollte mit einem Großbuchstaben beginnen. 
    Davor sollte  ein T (für Type) stehen. Bsp: TAuto
  • Der Name der Unit sollte dem Namen der Klasse entsprechen, nur statt des Präfix 'T' sollte das Präfix 'm' (für Modul) gewählt werden.   
    Bsp: Unit mAmpel. 
  • Falls die Klasse keine Oberklasse hat, wird die Angabe hinter class weggelassen.
  • Dienste sollten anfangs klein geschrieben werden, z.B. schalteUm .
  • Parameter  müssen im Schnittstellen-Teil hinter dem Namen des Dienstes angegeben werden. Sie können und sollten auch im Implementations-Teil aufgeführt werden.
  • Objektbezeichner sollten mit kleinem Anfangsbuchstaben geschrieben werden, z.B. meinStift.
  • Konstanten können an verschieden Stellen definiert werden und sollten nur aus Großbuchstaben bestehen, z.B. RADIUS.
  • Zustandsvariable werden mit einem kleinen z am Anfang geschrieben, z.B. zAktuelleFarbe.
  • Parameter werden mit einem kleinen p am Anfang aufgeführt, z.B. px

Beispiel

Beispiel ist die konkrete Implementation der Klasse TAmpel.