Arranjos 2x2 em POO

      
      program ARR2P;
      { TURBO PASCAL 7 SOURCE
        DELPHI SOURCE
        Calculo de arranjos de MAX elementos 2x2 em POO
        Joao Paulo Schwarz Schuler}
      {FPC Source Code}
      
      {$X+}
      {$F+}
      type TOnCalcEvent = procedure (X,Y:longint);
      
      type TCombinacao = object
                         private
                         MAXIMO:longint;
                         OnCalc:TOnCalcEvent;
      
                         public
                         constructor Init(POnCalcEvent:TOnCalcEvent;PMAX:longint);
                         procedure Run;
                         destructor Done;
                         end;
      
      constructor TCombinacao.Init(POnCalcEvent:TOnCalcEvent;PMAX:longint);
      begin
      OnCalc:=POnCalcEvent;
      MAXIMO:=PMAX;
      end;
      
      procedure TCombinacao.Run;
      var X,Y:integer;
      begin
      for X:=1 to MAXIMO do
          for Y:=1 to MAXIMO do
              if (X<>Y)
                 then OnCalc(X,Y);
      end;
      
      destructor TCombinacao.Done;
      begin
      end;
      
      
      const MAX = 5; { experimente outros valores}
      
      procedure Imprime(X,Y:longint);
      begin
      writeln('(',X,',',Y,')');
      end;
      
      var C:TCombinacao;
      begin
      C.Init(Imprime,MAX);
      C.Run;
      C.Done;
      end.