[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