Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
Delphi 12 Athens
|
AW: Verwendung von Interface - Verständnisfrage
13. Mär 2022, 13:28
Wie wäre es denn so?
Delphi-Quellcode:
type
ITextValue = interface
['{14E563E8-1AE9-41F2-B362-C48D4D0AE8A0}']
procedure SetLaenge(L : Int32);
function GetLaenge: Int32;
procedure SetBreite(B : Int32);
function GetBreite: Int32;
function GetFlaeche : int32;
property Laenge: Int32 read GetLaenge write SetLaenge;
property Breite: Int32 read GetBreite write SetBreite;
property Flaeche: int32 read GetFlaeche;
end;
TFlaeche = class(TInterfacedObject, ITextValue)
private
FLaenge: int32;
FBreite: int32;
public
procedure SetLaenge(L : Int32);
function GetLaenge: Int32;
procedure SetBreite(B : Int32);
function GetBreite: Int32;
function GetFlaeche : int32;
// Die Neudeklaration der Properties ist nicht zwingend notwendig
// Wenn man die Klasse aber einmal als solche ansprechen möchte,
// erspart das einen Cast
property Laenge: Int32 read GetLaenge write SetLaenge;
property Breite: Int32 read GetBreite write SetBreite;
property Flaeche: int32 read GetFlaeche;
end;
...
function TFlaeche.GetBreite: Int32;
begin
Result := FBreite;
end;
function TFlaeche.GetFlaeche: int32;
begin
Result := FBreite * FLaenge;
end;
function TFlaeche.GetLaenge: Int32;
begin
Result := FLaenge;
end;
procedure TFlaeche.SetBreite(B: Int32);
begin
FBreite := B;
end;
procedure TFlaeche.SetLaenge(L: Int32);
begin
FLaenge := L;
end;
Beispielverwendung:
Delphi-Quellcode:
procedure TFormTest.ButtonTestClick(Sender: TObject);
var
lTest: ITextValue; // Wenn wir den Interface-Typen nehmen, brauchen wir keine manuelle Freigabe
begin
lTest := TFlaeche.Create;
lTest.Breite := 4;
lTest.Laenge := 5;
ShowMessage(lTest.Flaeche.ToString);
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
Geändert von DeddyH (13. Mär 2022 um 13:31 Uhr)
Grund: Kommentar bzgl. Properties ergänzt
|