Ein Objekt besteht aus
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
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.
objekt.attribut objekt.methodeDie 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.
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: