/***************************************************************/
Interface IEspaceMetre Defaut Final TailleSegment 32 ConserverObjets
/* Objet : Definition des espaces metrés. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
Procedure Convertir(O : Nul Ou Objet);
Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
Procedure SupprimerPropriete(NomPropriete : Caractere);
Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Operateur Optimiser(Invariant, NulAbsorbant) <=(E:Nul Ou IEspaceMetre) Retourner Nul Ou Booleen;
Operateur Optimiser(Invariant, NulAbsorbant) >=(E:Nul Ou IEspaceMetre) Retourner Nul Ou Booleen;
Operateur Optimiser(Invariant, NulAbsorbant) <(E:Nul Ou IEspaceMetre) Retourner Nul Ou Booleen;
Operateur Optimiser(Invariant, NulAbsorbant) >(E:Nul Ou IEspaceMetre) Retourner Nul Ou Booleen;
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Interface
L'interface IEspaceMetre modélise un espace métré i.e. un espace comportant les opérations de comparaison. Ce concept est important puisque ses propriétés sont utilisées par l'algorithme de preuve de programme d'Up ! Compiler.
L'interface IEspaceMetre ne possède pas de constructeur implicite.
Enumere
/*****/
Couleurs (Bleu, Blanc, Rouge);
/* Définition des couleurs. Il n'y a pas de valeur d'associée aux couleurs. */
Variable
/******/
C1 : Couleurs;
C2 : Caractere;
Principal
/*******/
Debut
...
C1=Bleu;
...
Si C1==Bleu Alors
/* Egalité entre deux valeurs d'un même énuméré. */
...
Fin Si
Si C1!=Bleu Alors
/* Inégalité entre deux valeurs d'un même énuméré. */
...
Fin Si
Si C1<=Bleu Alors
/* Infériorité large entre deux valeurs d'un même énuméré. */
...
Fin Si
Si C1<Bleu Alors
/* Infériorité stricte entre deux valeurs d'un même énuméré. */
...
Fin Si
...
C2="coucou";
Si C1=="hello" Alors
/* Egalité entre deux chaînes de caractères. */
...
Si C1!="hello" Alors
/* Inégalité entre deux chaînes de caractères. */
...
Si C1<="hello" Alors
/* Infériorité large entre deux chaînes de caractères. */
...
Si C1<"hello" Alors
/* Infériorité stricte entre deux chaînes de caractères. */
...
...
Fin Principal
- | - | - | - | - | - | - | - | - |