Модератор: Модераторы
{$OBJECTCHECK ON}
{$INTERFACES CORBA}
program delegation_test;
type
 IDeclaredOptions = interface
  procedure MetodA;
  procedure MetodB;
 end;
 TManager = class
 private
  FRealization: IDeclaredOptions;
 public
  property Realization: IDeclaredOptions read FRealization write FRealization;
 end;
TRealization1 = class( IDeclaredOptions)
  procedure MetodA;
  procedure MetodB;
 end;
TRealization2 = class( IDeclaredOptions)
  procedure MetodA;
  procedure MetodB;
 end;
procedure TRealization1.MetodA;
begin
  writeln('TRealization1.MetodA');
end;
procedure TRealization1.MetodB;
begin
  writeln('TRealization1.MetodB')
end;
procedure TRealization2.MetodA;
begin
  writeln('TRealization2.MetodA')
end;
procedure TRealization2.MetodB;
begin
  writeln('TRealization2.MetodB')
end;
var
  M1, M2 : TManager;
begin
  M1 := TManager.Create;
  M1.Realization := TRealization1.Create;
  M1.Realization.MetodA; M1.Realization.MetodB;
  M1.Realization := TRealization2.Create;
  M1.Realization.MetodA; M1.Realization.MetodB
end.
program delegation_test;
{$Mode objfpc}
{$OBJECTCHECKS ON}
{$INTERFACES CORBA}
type
 IDeclaredOptions = interface
  procedure MetodA;
  function MetodB : Integer;
 end;
 TManager = class(IDeclaredOptions)
 public
  FRealization: IDeclaredOptions;
  property Realization: IDeclaredOptions read FRealization implements IDeclaredOptions;
 end;
TRealization1 = class( IDeclaredOptions)
  procedure MetodA;
  function MetodB : Integer;
 end;
TRealization2 = class( IDeclaredOptions)
  procedure MetodA;
  function MetodB : Integer;
 end;
procedure TRealization1.MetodA;
begin
  writeln('TRealization1.MetodA');
end;
function TRealization1.MetodB : Integer;
begin
  writeln('TRealization1.MetodB')
end;
procedure TRealization2.MetodA;
begin
  writeln('TRealization2.MetodA')
end;
function TRealization2.MetodB : Integer;
begin
  writeln('TRealization2.MetodB')
end;
var
  Mn : TManager;
begin
  Mn := TManager.Create;
  Mn.FRealization := TRealization1.Create;
  Mn.Realization.MetodA; Mn.Realization.MetodB;
  Mn.FRealization := TRealization2.Create;
  Mn.Realization.MetodA; Mn.Realization.MetodB
end.

Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1