Syntaxe...
Description...
Exemple...
Voir aussi...
Traduction...
Instruction. Définition d'une nouvelle interface.
Interface
NomDeLInterface ParametrageDuType HeritageDeLInterfaceFin Interface
Interface
NomDeLInterface Recursif
;
Revenir en haut de la page...
Interface
permet de définir un type de données servant d'interface entre deux parties du programme. Une interface peut être vue comme un contrat passé entre ces deux parties du programme. Concernant les interfaces, il y a trois acteurs :
L'éditeur, le client, le serveur peuvent être dans le même composant, mais cela n'est pas le plus intéressant. Le mieux est de répartir les clients et les serveurs dans des modules séparés et de charger les modules implémentant les interfaces dynamiquement.
Une fois définie, l'interface se comporte comme un type défini par l'instruction Type, si ce n'est que tous les objets déclarés de ce type doivent être précédés de Nul Ou. En effet, le type implémentant l'interface n'étant pas à priori connu, il est impossible d'invoquer son constructeur implicite pour l'initialisation des objets.
Un type implémente une interface au moyen de l'instruction Implemente. En ce cas, toutes les méthodes de l'interface doivent être présentes dans la définition du type, avec les mêmes prototypes et les mêmes droit d'accès.
Revenir en haut de la page...
Public :
Interface IObjetADessiner
/* Interface définissant le comportement d'un objet à dessiner. */
Protege :
X:Entier Lecture Public;
Public :
Y:Entier Lecture Public;
Largeur:Entier Lecture Public;
Hauteur:Entier Lecture Public;
Procedure Selectionner(S:Booleen);
Fin Interface
Fonction Deplacer(X : Entier, Y : Entier) Retourner Booleen;
Fonction Agrandir(X : Entier, Y : Entier, Largeur : Entier, Hauteur : Entier) Retourner Booleen;
Procedure Dessiner();
ImporterModule M1(<M1.upi>);
Public :
Type TCercle Implemente M1.IObjetADessiner
/* Un cercle est un objet à dessiner particulier. */
Public :
Constructeur();
Fin Type
Procedure Selectionner(S:Booleen);
Fonction Deplacer(PX : Entier, PY : Entier) Retourner Booleen;
Fonction Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen;
Procedure Dessiner();
Procedure TCercle.Selectionner(S:Booleen)
/* Sélection du cercle. */
Debut
...
Fin Procedure
Fonction TCercle.Deplacer(PX : Entier, PY : Entier) Retourner Booleen
/* Déplacement du cercle. */
Debut
...
Fin Fonction
Fonction TCercle.Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen
/* Agrandissement du cercle. */
Debut
...
Fin Fonction
Procedure Dessiner()
/* Dessin du cercle. */
Debut
...
Fin Procedure
ImporterModule M1(<M1.upi>);
Public :
Type TCarre Implemente M1.IObjetADessiner
/* Un carré est un objet à dessiner particulier. */
Public :
Constructeur();
Fin Type
Procedure Selectionner(S:Booleen);
Fonction Deplacer(PX : Entier, PY : Entier) Retourner Booleen;
Fonction Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen;
Procedure Dessiner();
Procedure TCarre.Selectionner(S:Booleen)
/* Sélection du carré. */
Debut
...
Fin Procedure
Fonction TCarre.Deplacer(PX : Entier, PY : Entier) Retourner Booleen
/* Déplacement du carré. */
Debut
...
Fin Fonction
Fonction TCarre.Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen
/* Agrandissement du carré. */
Debut
...
Fin Fonction
Procedure TCarre.Dessiner()
/* Dessin du carré. */
Debut
...
Fin Procedure
Principal
Variable
A:Nul Ou IObjetADessiner;
Debut
M=Module("M2");
M:Nul Ou Module;
/* Le module M2 contenant le serveur 'cercle' est chargé dynamiquement. */
A=M.NouvelObjet(IObjetADessiner);
/* Création d'un objet à dessiner. Pour ce serveur, il s'agit d'un cercle. */
A.Dessiner();
/* Dessin du cercle. */
M=Nul;
/* Déchargement du serveur 'cercle'. */
...
M=Module("M3");
/* Le module M3 contenant le serveur 'carré' est chargé dynamiquement. */
A=M.NouvelObjet(IObjetADessiner);
/* Création d'un objet à dessiner. Pour ce serveur, il s'agit d'un carré. */
A.Dessiner();
/* Dessin du carré. */
M=Nul;
/* Déchargement du serveur 'carré'. */
Fin Principal
Metier pour définir un type métier.
Schnittstelle | Interface | 界面 | Interfaz | - | - | - | - |