Thema: Delphi OOP Frage

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: OOP Frage

  Alt 23. Apr 2006, 13:12
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
Michael
  Mit Zitat antworten Zitat