Hi,
Also hier ist mal mein Lieblingsbeispiel.
Delphi-Quellcode:
TBeispiel = class
private
FLeben: Integer;
FTot: Boolean;
function GetLeben: Integer;
function SetLeben(const Value: Integer);
public
property Tot: Boolean read FTot;
property Lebensenergie: Integer read GetLeben write SetLeben;
end;
function TBeispiel.GetLeben: Integer;
begin
Result := FLeben;
{ Ob nicht einfach Read FLeben reicht darüber kann man sich in dem Beispiel streiten^^}
end;
procedure TBeispiel.SetLeben(const Value: Integer);
begin
if Value > 0 then // Wenn HP > 0
FLeben := Value // Dann FLeben auf neuen Wert setzen
else
if Value <= 0 then // Wenn HP <= 0
begin
FLeben := 0; // Dann FLeben auf 0 setzen
FTot := true; // und die Einheit als Tot erklären
end;
end;
Damit kann man relativ gut erkennen wofür Properties gut sind. In der Set-Methode wird nicht einfach nur der neue Wert gesetzt (Dann könnte man theoretisch ja auch einfach nur Variablen benutzen) sondern es wird je nach Situation anders gehandelt.
Beispiel 1b:
Delphi-Quellcode:
var Test: TBeispiel;
procedure Ka;
begin
Test := TBeispiel.Create;
if not Test.Tot then ShowMessage('Einheit lebt noch!');
Test.Leben := -10;
ShowMessage('Lebensenergie: ' + IntToStr(Test.Leben));
if Test.Tot then ShowMessage('Einheit ist tot!');
end;
Wie du siehst musstest du nirgendwo Test.Tot := true setzen. Was auch nicht gehen würde weil es eine Readonly-Property ist.
Ich hoffe du hast jetzt verstanden wie das funktioniert und was für Vorteile sich daraus ergeben. Und ich hoffe ich habe die Frage richtig verstanden und das hier nicht umsonst geschrieben
Gruß
Neutral General