Type
. Définition d'une méthode correspondant à un opérateur.
Operateur
InflexionAppel NomDeLOperateur (
ListeDeParametresDUnAppel )
ResultatDeLOperateur
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 :
Voici la liste des opérateurs reconnus par Up ! Application System :
Symbole | Signification | Résultat | Commentaire |
+ | Addition | Oui | Pour les chaînes de caractère, cet opérateur signifie concaténation. |
- | Soustraction | Oui | Néant. |
* | Multiplication | Oui | Néant. |
/ | Division réelle | Oui | Néant. |
\ | Division entière | Oui | Néant. |
% | Congruence | Oui | Néant. |
^ | Puissance | Oui | Néant. |
<< | Décalage à gauche | Oui | Pour les entiers, cela a pour effet de multiplier le nombre par deux. |
>> | Décalage à droite | Oui | Pour les entiers, cela a pour effet de diviser le nombre par deux. |
& | Et logique | Oui | Pour les entiers, cela permet d'effectuer des et bit à bit. |
| | Ou logique | Oui | Pour les entiers, cela permet d'effectuer des ou bit à bit. |
-- | Incrémentation | Oui | Néant. |
++ | Décrémentation | Oui | Néant. |
= | Affectation | Non | Néant. |
+= | Addition puis affectation | Non | S'il n'est pas défini, il se déduit de + et = , à condition qu'ils soient définis. |
-= | Soustraction puis affectation | Non | S'il n'est pas défini, il se déduit de - et = , à condition qu'ils soient définis. |
*= | Multiplication puis affectation | Non | S'il n'est pas défini, il se déduit de * et = , à condition qu'ils soient définis. |
/= | Division puis affectation | Non | S'il n'est pas défini, il se déduit de / et = , à condition qu'ils soient définis. |
%= | Congruence puis affectation | Non | S'il n'est pas défini, il se déduit de % et = , à condition qu'ils soient définis. |
^= | Puissance puis affectation | Non | S'il n'est pas défini, il se déduit de ^ et = , à condition qu'ils soient définis. |
<<= | Décalage à gauche puis affectation | Non | S'il n'est pas défini, il se déduit de << et = , à condition qu'ils soient définis. |
>>= | Décalage à droite puis affectation | Non | S'il n'est pas défini, il se déduit de >> et = , à condition qu'ils soient définis. |
&= | Et logique puis affectation | Non | S'il n'est pas défini, il se déduit de & et = , à condition qu'ils soient définis. |
|= | Ou logique puis affectation | Non | S'il n'est pas défini, il se déduit de | et = , à condition qu'ils soient définis. |
== | Egalité | Oui | Néant. |
!= | Différence | Oui | S'il n'est pas défini, il se déduit de == , à condition qu'ils soient définis. |
<= | Inférieur ou égal | Oui | S'il n'est pas défini, il se déduit de < et == , à condition qu'ils soient définis. |
>= | Supérieur ou égal | Oui | S'il n'est pas défini, il se déduit de > et == , à condition qu'ils soient définis. |
< | Inférieur | Oui | Néant. |
> | Supérieur | Oui | Néant. |
[] | Indexation | Oui | Néant. |
() | Evaluation | A voir | Néant. |
()
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 :
<=
et >=
sont définis pour ce type de données, il est alors possible d'employer :
=
, <
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.
Type TA
/*****/
B : Entier;
E : Entier;
Operateur +(A : TA) Retourner TA;
Operateur -() Retourner 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
/*****************/
D : Date;
Operateur +(B : TB) Retourner TB;
Operateur *(E : Entier) Retourner TB;
Operateur *(R : Reel) Retourner TB;
Operateur *(A : TA) Retourner TB;
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
/*****/
Operateur +(E : Entier) Retourner TC;
Operateur /(E : Entier) Retourner TC Final;
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
- | - | - | - | - | - | - | - | - |