type
ICar = interface
function StartEngine: Boolean;
procedure StopEngine;
end;
TSportCar = class(TInterfacedObject, ICar)
private
FStarted: Boolean;
public
function StartEngine: Boolean;
procedure StopEngine;
end;
function TSportCar.StartEngine: Boolean;
begin
if FStarted then
Exit(False);
WriteLn('start engine');
FStarted := True;
Result := True;
end;
procedure TSportCar.StopEngine;
begin
WriteLn('stop engine');
FStarted := False;
end;
var
Car: ICar;
begin
Car := TSportCar.Create;
WriteLn('started is ', Car.StartEngine);
Car.StopEngine;
end.