Object/fr

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) français (fr)

Le mot réservé object est utilisé pour construire des types de donnée complexes contenant à la fois des données et des routines. Les Object permettent à l'utilisateur de faire de la programmation objet (POO). Cela ressemble à la classe dans les types que l'on peut créer mais par défaut les Object sont créés sur la pile alors que les objets (instances de classe) sont créés sur le tas. Toutefois, les Objects peuvent être créés sur le tas en utilisant la procédure New. Les Objects ont été introduits dans Turbo Pascal alors que les Classes ont été introduites dans Delphi. Les Objects sont conservés pour assurer la compatibilité descendante et sont largement surpassés par les Classes.

Exemple de squelette de création de type de données Object :

type
  TTest = object
  private
    { private declarations }
  public
    { public declarations }
  end;

Exemple de squelette de création de type de données Object compacté :

type
  TTest = packed object
  private
    { private declarations }
  public
    { public declarations }
  end;

Exemple avec constructeur et destructeur:

type
   TTest = object
   private 
     {private declarations}
     total_errors : Integer;
   public
     {public declarations}
     constructor Init;
     destructor Done;
     procedure IncrementErrors;
     function GetTotalErrors : Integer;
   end;

procedure TTest.IncrementErrors;
begin
  Inc(total_errors);
end;
    
function TTest.GetTotalErrors : Integer;
begin
   GetTotalErrors := total_errors;
end;

constructor TTest.Init;
begin
  total_errors := 0;
end;

destructor TTest.Done;
begin
   WriteLn('Destructor not needed - nothing allocated on the heap');
end;

var
   error_counter: TTest;

begin
   error_counter.Init; // unlike C++, constructors must be explicitly called
   error_counter.IncrementErrors;
   error_counter.IncrementErrors;
   WriteLn('current errors:', error_counter.GetTotalErrors);
   error_counter.Done
end.

Sortie:
current errors:2
Destructor not needed - nothing allocated on the heap

Voir aussi

Programmation utilisant des Objects