Programmiersprache Pascal

Objekte


Entwurfssymbol für ein Objekt

Ein Objekt besteht aus

Attribute und Methoden werden auch als Objekt-Ressourcen bezeichnet.


Entwurfssymbole nach Booch

Bei einem konsequent objektorientierten Modell kann auf die Attribute eines Objekts nur über dessen Methoden zugegriffen werden (Datenkapselung).
Diese Zugriffsbeschränkung gilt für die Objekte in Pascal-Versionen nicht immer.

Zu unterscheiden sind

Objekte sind als Variablen mit Objekt-Datentyp zu vereinbaren.
Häufig geschieht die Bezugnahme auf Objekte über dynamische Variablen, d.h. Objekte werden oft erst zur Laufzeit des Programms erzeugt.


Turbo Pascal

  TYPE objekt_typ = OBJECT               { Objekt-Datentyp }
                      attribute
                      methoden
                    END;

       objekt_ptr = ^objekt_typ;         { Zeiger-Datentyp }
Ein Objekt kann wie folgt statisch vereinbart werden:
  VAR objekt : objekt_typ;
Häufiger ist jedoch meist ein dynamisches Arbeiten mit Objekten anzutreffen:
  VAR pobjekt : objekt_ptr;              { Zeiger-Variable }

  New(pobjekt);                          { Objekt-Erzeugung ohne  }
  New(pobjekt, konstruktor);             {   oder mit Konstruktor }
Ein Konstruktor ist eine spezielle Methode, welche bei der Objekt-Erzeugung aufgerufen wird und Initialisierungen vornimmt, also typischerweise die Werte einiger oder aller Attribute des Objekts festlegt.

Bezugnahmen auf Komponenten eines Objekts sehen wie folgt aus:

  objekt.attribut                        { statische Variable }
  objekt.methode

  pobjekt^.attribut                      { dynamische Variable }
  pobjekt^.methode
Für das Vernichten von Objekten kann auf einen Destruktor zurückgegriffen werden, der wie ein Konstruktor eine spezielle Methode des Objekts darstellt.


Delphi

Delphi erlaubt die Nutzung der in Turbo Pascal vorhandenen Techniken des Arbeitens mit Objekten, favorisiert jedoch eine neue Technik:

  TYPE objekt_typ = CLASS                { Objekt-Datentyp }
                      attribute
                      methoden
                    END;
Der Unterschied zur alten Technik zeigt sich (unter anderem) bei der folgenden Deklaration:
  VAR objekt : objekt_typ;
objekt ist hier eine dynamische Variable, d.h. ein Zeiger auf ein Objekt.
Bezugnahmen auf Komponenten von objekt erfolgen ohne Verwendung von ^:
  objekt.attribut
  objekt.methode
Die Einsparung des in Turbo Pascal notwendigen ^ ermöglicht eine einfachere Schreibweise.

Die Erzeugung eines Objekts geschieht mit Hilfe von New:

  New(pobjekt);                          { Objekt-Erzeugung ohne  }
  New(pobjekt, konstruktor);             {   oder mit Konstruktor }
Von mittels CLASS definierten Objekttypen lassen sich keine statischen Instanzen erzeugen.


Pascal++

Der Umgang mit Objekten in Pascal++ weicht deutlich von der Vorgehensweise in Turbo Pascal und Delphi ab. Dies betrifft sowohl die Syntax als auch die Funktionalität: Pascal++ erlaubt Mehrfachvererbung.

Ein Objekttyp wird wie folgt deklariert:

  OBJECT TYPE objekt_typ;
    attribute
    methoden

    BEGIN
      initialisierung
      ***
      finalisierung
  END;
Die Erzeugung eines Objekts geschieht mit Hilfe von New:
  VAR objekt : objekt_typ;

  objekt := New(objekt_typ);     { New als Funktion }
                                     { oder }
  New(objekt);                   { New als Prozedur }
Möglich ist auch
  VAR objekt : objekt_typ VALUE New(objekt_typ);
                                                  { oder }
  VAR objekt : objekt_typ := New(objekt_typ);
Wird von einem Objekttyp nur ein einzelnes Objekt benötigt, so kann kürzer
  OBJECT objekt;
    attribute
    methoden

    BEGIN
      initialisierung
      ***
      finalisierung
  END;
verwendet werden.
Das Objekt objekt muß in diesem Fall nicht mehr dynamisch mit New erzeugt werden.


Der aus Standard Pascal bekannte Record kann als Spezialfall eines Objekts aufgefaßt werden:
Ein Record besitzt im Vergleich zum Objekt nur Attribute, jedoch keine Methoden.

Darüberhinaus verfügt das Objekt über eine Reihe weiterer Qualitäten:



P. Böhme, 19.08.1996