Operateur - Définition d'une méthode d'un type

Attribut de Type. Définition d'une méthode correspondant à un opérateur.

Syntaxe

TypeDAcces Operateur InflexionAppel NomDeLOperateur ( ListeDeParametresDUnAppel ) ResultatDeLOperateur

Description

L'instruction Operateur permet de définir explicitement une méthode correspondant à un opérateur se comportant comme une procédure ou une fonction. Il s'agit ni plus ni moins d'une procédure ou d'une fonction formulée différemment.

L'opérateur est propre à un objet du type en cours de définition. Une méthode est toujours existante. Puisqu'il s'agit d'une méthode, cela est un traitement au même titre qu'une fonction ou une procédure définie en dehors d'un type. Elle peut être surchargée soit :

Une méthode comporte toujours un paramètre implicite qui est l'objet à laquelle elle s'applique. Ce paramètre n'apparaît pas dans le prototype de la méthode. Cet objet identifié par Objet dans le corps de la méthode peut être employé comme tout autre paramètre.

Voici la liste des opérateurs reconnus par Up ! Application System :

SymboleSignificationRésultatCommentaire
+AdditionOuiPour les chaînes de caractère, cet opérateur signifie concaténation.
-SoustractionOuiNéant.
*MultiplicationOuiNéant.
/Division réelleOuiNéant.
\Division entièreOuiNéant.
%CongruenceOuiNéant.
^PuissanceOuiNéant.
<<Décalage à gaucheOuiPour les entiers, cela a pour effet de multiplier le nombre par deux.
>>Décalage à droiteOuiPour les entiers, cela a pour effet de diviser le nombre par deux.
&Et logiqueOuiPour les entiers, cela permet d'effectuer des et bit à bit.
|Ou logiqueOuiPour les entiers, cela permet d'effectuer des ou bit à bit.
--IncrémentationOuiNéant.
++DécrémentationOuiNéant.
=AffectationNonNéant.
+=Addition puis affectationNonS'il n'est pas défini, il se déduit de + et =, à condition qu'ils soient définis.
-=Soustraction puis affectationNonS'il n'est pas défini, il se déduit de - et =, à condition qu'ils soient définis.
*=Multiplication puis affectationNonS'il n'est pas défini, il se déduit de * et =, à condition qu'ils soient définis.
/=Division puis affectationNonS'il n'est pas défini, il se déduit de / et =, à condition qu'ils soient définis.
%=Congruence puis affectationNonS'il n'est pas défini, il se déduit de % et =, à condition qu'ils soient définis.
^=Puissance puis affectationNonS'il n'est pas défini, il se déduit de ^ et =, à condition qu'ils soient définis.
<<=Décalage à gauche puis affectationNonS'il n'est pas défini, il se déduit de << et =, à condition qu'ils soient définis.
>>=Décalage à droite puis affectationNonS'il n'est pas défini, il se déduit de >> et =, à condition qu'ils soient définis.
&=Et logique puis affectationNonS'il n'est pas défini, il se déduit de & et =, à condition qu'ils soient définis.
|=Ou logique puis affectationNonS'il n'est pas défini, il se déduit de | et =, à condition qu'ils soient définis.
==EgalitéOuiNéant.
!=DifférenceOuiS'il n'est pas défini, il se déduit de ==, à condition qu'ils soient définis.
<=Inférieur ou égalOuiS'il n'est pas défini, il se déduit de < et ==, à condition qu'ils soient définis.
>=Supérieur ou égalOuiS'il n'est pas défini, il se déduit de > et ==, à condition qu'ils soient définis.
<InférieurOuiNéant.
>SupérieurOuiNéant.
[]IndexationOuiNéant.
()EvaluationA voirNéant.

Tous les opérateurs sauf () ont un paramètre (en plus du paramètre implicite qui est l'objet auquel ils s'appliquent).

L'opérateur - a un paramètre facultatif. S'il est présent, il s'agit de la soustraction ; sinon, il s'agit du moins unaire.

Les opérateurs ++ et - ont un paramètre de type Booleen. Si la valeur de ce paramètre est Vrai, il s'agit d'effectuer un calcul préfixé (incrémentation puis retour de la valeur une fois incrémentée par exemple). Sinon, il s'agit d'un opérateur postfixé (mémorisation de la valeur initiale, incrémentation puis retour de la valeur initiale par exemple).

L'opérateur () a un nombre variable d'arguments (0 à n).

Certains opérateurs ont un résultat obligatoire puisqu'ils s'apparentent à une fonction. D'autres n'ont pas de résultat puisqu'ils s'apparentent à une procédure. Ceci est précisé par la colonne résultat dans le tableau précédent. L'opérateur () a un résultat facultatif.

Si l'opérateur == est défini pour ce type de données, il est alors possible d'employer :

Si les opérateurs <= et >= sont définis pour ce type de données, il est alors possible d'employer : Si les opérateurs =, < et > sont définis pour ce type de données, il est alors possible d'employer les instructions Max et Min.

Si les opérateurs = et + sont définis pour ce type de données, il est alors possible d'employer l'instruction Somme.

Si les opérateurs =, + et / sont définis pour ce type de données, il est alors possible d'employer l'instruction Moyenne.

Si les opérateurs =, +, / et ^ sont définis pour ce type de données, il est alors possible d'employer les instructions EcartType et Variance.

Exemple

Type TA
/*****/
Fin Type
/* Le type TA est composé de deux propriétés (B et E) et de deux méthodes (+ et -). */

Type TB HeriteDe TA
/*****************/
Fin Type
/* Le type TB est compose des deux propriétés de TA, d'une propriété supplémentaire D et d'une méthode supplémentaire *. La méthode + est surchargée. La méthode * est surchargée en trois exemplaires en fonction du type du paramètre. */

Type TC
/*****/
Fin Type
/* Le type TC est compose de deux méthodes + et /. La méthode + peut être surchargée mais pas la méthode /. */

/****************************************************************/
Operateur TA.+(A : TA) Retourner TA
/* Objet : Definition de la methode '+' de de 'TA'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TA.-() Retourner TA
/* Objet : Definition de la methode '-' de de 'TA'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TB.+(B : TB) Retourner TB
/* Objet : Definition de la methode '+' de de 'TB'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TB.*(E : Entier) Retourner TB
/* Objet : Definition de la methode '*' de de 'TB'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TB.*(R : Entier) Retourner TB
/* Objet : Definition de la methode '*' de de 'TB'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TB.*(A : TA) Retourner TB
/* Objet : Definition de la methode '*' de de 'TB'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TC.+(E : Entier) Retourner TC
/* Objet : Definition de la methode '+' de de 'TC'. */
/****************************************************************/
Debut
...
Fin Operateur

/****************************************************************/
Operateur TC./(E : Entier) Retourner TC
/* Objet : Definition de la methode '/' de de 'TC'. */
/****************************************************************/
Debut
...
Fin Operateur

Voir aussi

Procedure, Fonction et Rappel pour connaître les autres types de méthodes possibles. Type pour définir un type de données. Final pour empêcher le surtypage. Defaut pour définir des méthodes implicites d'un type.

Traduction

---------