[ada-france] Notation objet préfixée en Ada 2005 (bis).

Jean-Pierre Rosen rosen at adalog.fr
Ven 28 Déc 11:08:02 CET 2007


Pascal a écrit :
> Bonjour.
> En effet, j'ai pensé après coup (cette nuit) au discriminant qui 
> s'applique également au type étiquetté :-)
> En effet (bis), ma présentation était inexacte, je PEUX définir une 
> fonction:
>   function Constructor (N : Entier; X, Y : Entier) return TourG;
> mais je DOIS également redéfinir la fonction:
>   function Constructor (N : Entier) return TourG;
> Assez lourd, passons.
Je pense que c'est pareil dans tous les langages: on peut rajouter des 
constructeurs, mais pas se débarrasser des constructeurs hérités.

> Je vois bien le code de la première:
>   function Constructor (N : Entier; X, Y : Entier) return TourG is
>   T : TourG := Constructor (N);
>   begin
>   T.X := X; T.Y := Y;
>   return T;
>   end;
Ou plus simplement:
    function Constructor (N : Entier; X, Y : Entier) return TourG is
    begin
       return (Tour'(Constructor (N)) with X => X, Y => Y);
    end;
Ce qui appelle automatiquement le constructeur de la super-classe.

Du coup, on peut définir:
       function Constructor (N : Entier) return TourG is
       begin
          return Constructor (N, 0, 0);
       end Constructor;
Ce qui est plus logique: le constructeur simple appelle le constructeur 
complet avec des valeurs par défaut.
-- 
---------------------------------------------------------
            J-P. Rosen (rosen at adalog.fr)
Visit Adalog's web site at http://www.adalog.fr


Plus d'informations sur la liste de diffusion Ada-France