Wenn die Getter schon passend in TMonster vorhanden sind, dann kannst du es ja auch mal so versuchen:
Delphi-Quellcode:
type
TTyp = (Kreis, Quadrat);
type
IElement = interface
function GetFarbe: TColor;
function GetGroesse: Double;
function GetTyp: TTyp;
property Typ: TTyp read GetTyp;
property Farbe: TColor read GetFarbe;
property Groesse: Double read GetGroesse;
end;
IReferenz = interface(IElement)
end;
IMonster = interface
function GetElement: IElement;
function GetReferenz: IReferenz;
property Element: IElement read GetElement;
property Referenz: IReferenz read GetReferenz;
end;
type
TMonster = class(TInterfacedObject, IMonster, IElement, IReferenz)
function IElement.GetFarbe = GetElementFarbe;
function IElement.GetGroesse = GetElementGroesse;
function IElement.GetTyp = GetElementTyp;
function IReferenz.GetFarbe = GetReferenzFarbe;
function IReferenz.GetGroesse = GetReferenzGroesse;
function IReferenz.GetTyp = GetReferenzTyp;
private
function GetElement: IElement;
function GetReferenz: IReferenz;
function GetElementFarbe: TColor;
function GetElementGroesse: Double;
function GetElementTyp: TTyp;
function GetReferenzFarbe: TColor;
function GetReferenzGroesse: Double;
function GetReferenzTyp: TTyp;
end;
{ TMonster }
function TMonster.GetElement: IElement;
begin
Result := Self as IElement;
end;
function TMonster.GetReferenz: IReferenz;
begin
Result := Self as IReferenz;
end;