Object Pascal im Detail - Objektorientierung www.delphi-treff.de
96
var Bauer: TFigur; ...
Bauer := TFigur.Create; Bauer.Ziehe‘a‘,
5 ;
4.8.5.2. Attribute oder Felder
Attribute auch Felder genannt sind Variablen, die zu einem Objekt gehören und damit seinen Zustand beschreiben. Attributnamen beginnen in Delphi mit einem großen F Field. Wie auch beim T vor Klassennamen
handelt es sich hierbei um eine Vereinbarung. Es gehö t zu „guten Ton , Felder immer im private-Teil einer Klasse zu deklarieren, weil sie den internen
Zustand eines Objekts enthalten, der von außen nur über definierte Schnittstellen Methoden verändert werden können sollte. Prinzipiell ist aber auch eine andere Position innerhalb der Klasse möglich. Jedoch
müssen die Felddeklarationen vor den Methodendeklarationen stehen. Felde si d i u se e Beispiel o TFigu „FX u d „FY – das F steht für Field, und X und Y sind die
Koordinaten des Schachspielfelds.
4.8.5.3. Eigenschaften oder Properties
Eigenschaften sind keine eigenständigen Variablen, sie belegen zur Laufzeit keinen Speicherplatz. Über sie lassen sich Lese- und Schreibzugriffe auf Attribute regeln. Die Eigenschaften sind es auch, die im
Objektinspektor angezeigt werden. Eigenschaften werden sinnvollerweise im public- oder published-Abschnitt einer Klasse definiert:
type TFigur = class
private FX: Integer;
FY: Integer; public
procedure Ziehex: XKoordinate; y: YKoordinate; function IstZugErlaubtx: XKoordinate; y: YKoordinate: Boolean;
property X: XKoordinate read FX; end;
Eine Eigenschaft verfügt über eine read- oder eine write-Angabe oder über beide. Dahinter folgt dann entweder direkt der Name des Feldes, auf das lesend oder schreibend zugegriffen werden soll, oder der Name
einer Methode, die den Zugriff steuern soll. Wird für read eine Methode verwendet, darf diese keinen Parameter haben und muss einen Rückgabewert
liefern, der dem Typ der Eigenschaft entspricht. Bei einem Feld muss dieses natürlich auch den Typ der Eigenschaft haben. Beispiel:
Object Pascal im Detail - Objektorientierung www.delphi-treff.de
97
type TFigur = class
private FX: Integer;
FY: Integer; public
function LiesXKoordinate: XKoordinate; property X: XKoordinate read LiesXKoordinate;
end; Eine Methode für write muss genau einen Aufrufparameter besitzen, der ebenfalls dem Typ der Eigenschaft
entspricht. Beispiel: type
TFigur = class private
FX: Integer; FY: Integer;
public procedure SetzeXKoordinatex: XKoordinate;
property X: XKoordinate write SetzeXKoordinate; end;
Hinter read und write selbst wird immer nur der reine Methodenname ohne Parameter oder Rückgabewert angegeben.
Enthält eine Eigenschaft nur eine read-Angabe, kann sie nur gelesen werden; enthält sie nur eine write-Angabe, kann sie nur geschrieben werden.
Properties können nicht als var-Parameter eingesetzt werden, da es sich bei ihnen ja nicht um direkte Zugriffe auf Felder handeln muss; sondern es können ja
„nur Methoden dahinter stecken.
4.8.5.4. Objekte erzeugen: Der Konstruktor