Zur allgemeinen Frage:
Properties eignen sich zum kontrollierten Zugriff auf die Daten deiner objekte. Sie können lesend, schreibend oder beides sein. Demnach kannst du bestimmen wie auf deine Daten zugegriffen werden darf, anstatt jeden Nutzer direkt mit deinen Variablen in Kontakt treten zu lassen, was mglw. ungewollte Folgen haben kann.
Ausserdem kannst du relativ einfach bei vererbten klassen die zugriffs- und sichtbarkeitsrechte ändern.
Delphi-Quellcode:
Type
TX = Class
Private
Fvalue: Integer; // feld zum speichern der daten
Function Getvalue: Integer; // zugriffsfunktion
Protected // nur für Erben sichtbar
Property Avalue: Integer Read Getvalue;
// Zugriffsbeschränkung auf nur lesend
Public
Constructor Create;
End;
TX2 = Class(TX)
Private
Procedure Setvalue(Value: Integer);
Public
Property Avalue Write Setvalue;
// Sichtbarkeit geändert, jetzt 'überall' sichtbar; ausserdem darf der wert geändert werden
End;
Damit ist jetzt nur noch Folgendes möglich:
Delphi-Quellcode:
{ TX }
Constructor TX.Create;
Begin
Fvalue := 42;
End;
Function TX.Getvalue: Integer;
Begin
Result := Fvalue;
End;
{ TX2 }
Procedure TX2.Setvalue(Value: Integer);
Begin
Fvalue := Value;
End;
Procedure Main;
Var
X: Tx;
Y: Tx2;
Begin
X := Tx.Create;
// X.Avalue := 42; //Cannot assign to a read only propery
Writeln(X.Avalue); // writes 42
X.Free;
Y := Tx2.Create;
Y.Avalue := 55;
Writeln(Y.Avalue); // writes 55
Y.Free;
End;